如何重新启动批处理文件本身?

如何重新启动批处理文件本身?

如何自动重新启动批处理?

如果批次的文件名发生变化,

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 文档,标题是可选的,但根据所选的其他选项,如果省略它,可能会遇到问题。

来源:https://ss64.com/nt/start.html

相关内容