打破批处理文件

打破批处理文件

我能想到的最佳标题。问题就在这里。我有一个批处理文件,用于提供用户日志文件目录。我将用户名的开头传递给该文件。DIR 列出指定目录中匹配的所有文件;然后批处理文件终止。我有一个类似的批处理文件来调用机器日志文件。我将计算机名称传递给该批处理文件,它会在记事本中打开相应的文本文件……然后它就在那里等着我关闭文本文件,然后它才会终止。在我看来,这似乎不是正确的行为。这是奇怪的批处理文件:

@echo off
o:
cd \[location]
%1.txt
exit /b

是否有某种方法可以让该批处理在打开文本文件后终止;或者为什么它要等待文本文件关闭后才结束?

答案1

有没有什么方法可以让这个批处理在打开文本文件后终止?

是的。将批处理文件更改为以下内容:

@echo off
o:
cd \[location]
start "" %1.txt
exit /b
  • start- 启动程序、命令或批处理脚本,在新窗口中打开。

  • ""是确保标题为空

    始终包含一个标题,这可以是一个简单的字符串,如“我的脚本”或只是一对空引号“”根据微软文档,标题是可选的,但根据所选择的其他选项,如果省略它,您可能会遇到问题。

为什么它要等待文本文件关闭才结束?

它等待是因为被调用的程序%1.txt(通常是记事本)正在当前命令 shell 的上下文中运行。当前 shell 不会继续运行,直到被调用的程序退出。


进一步阅读

答案2

您可以使用:

@start "..\%~1" /B Notepad "%~DPN1.txt"

办法:"%~dpn1.txt

~D ==> Drive:           ==> O:
~P ==> \path\Location\  ==> [\Location\Folder\To\File]
~N ==> Name             ==> FileName

:: The eXtension ::
~X  ==> .txt            ==> .eXtension
~NX ==> ~NX1            ==> FileName.txt  

Start "..\%~nx1" /b Notepad "%~DPNX1.txt"

%~DPNX1 is the same %~F1:
Full/Path/To/File.eXtension ==> O:\Folder\To\FileName.txt  

您可以用您最喜欢的编辑器替换记事本...

Start "..\%~1" /b "C:\Program Files (x86)\Sublime Text\Sublime.exe" "%~DPN1.txt"

与默认编辑器一起使用:

@start "[location]\%~1.txt" /b "%~dpn1.txt"

参考:start /?

相关内容