如何自动重新启动批处理?
如果批次的文件名发生变化,
start <fixedbatchfilename>
一定会失败,因为虽然文件名发生了变化,但命令却没有改变。
有没有可行的方法,比如
start <autogetbatchfilenameitself> ?
答案1
您可以%0
在同一目录中再次调用该批次本身。
这是一个小批处理文件,您可以自己查看变量:
@echo off
echo Filename exactly as called: %0
echo Driveletter: %~d0
echo Path: %~p0
echo Filename: %~n0
echo Extension: %~x0
echo Complete: %~d0%~p0%~n0%~x0
例子:
echo The following will cause this to loop until Ctrl+C is pressed:
%0
或者:
echo The following will cause this to loop until Ctrl+C is pressed:
%~d0%~p0%~n0%~x0
答案2
start "" "%~f0"
或者start "title of batch window" "%~f0"
要重新启动批处理文件,请使用:
start "" "%~f0" exit
这将从批处理文件内部启动批处理文件,无论文件名或位置如何,只要在批处理操作期间名称或位置没有发生变化,即在批处理启动之后和代码:(start "" "%~f0"
)有机会执行之前。
始终包含一个 TITLE,这可以是一个简单的字符串,如“我的脚本”,也可以只是一对空引号“”
根据 Microsoft 文档,标题是可选的,但根据所选的其他选项,如果省略它,可能会遇到问题。