我能想到的最佳标题。问题就在这里。我有一个批处理文件,用于提供用户日志文件目录。我将用户名的开头传递给该文件。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 /?