批处理文件使用参数自行运行的正确方法是什么?

批处理文件使用参数自行运行的正确方法是什么?

我有一个批处理文件。其中,我需要使用参数在新窗口中启动它的另一个副本。我尝试了该命令,start "" "%~0" "Param"但它说'"Param"' is not recognized as an internal or external command, operable program or batch file.没有启动任何东西。我唯一能让它工作的方法是start %~0 Param,但我认为如果路径中有空格,它会崩溃。所以使用参数启动当前批处理文件的另一个实例的正确方法是什么?

答案1

我将启动第二个 cmd shell,如下所示:

start "" Cmd.exe %~0 parameters

只是为批处理文件的每个迭代提供其自己的命令 shell。


OP 注释:我必须做以下事情:

start cmd.exe /C %~0 parameters

答案2

为了从批处理文件中调用另一个批处理文件,请使用call "name of script.bat"或“启动”脚本名称.bat“

尽管你可以不这样做,但由于它会不断地调用自身,因此会出现意想不到的结果。

从技术上来说,你可以这样写

%0 MyParam

答案3

为了避免无限循环,请检查参数是否存在:

:: Q:\Test\2019\01\25\SU_1298393.cmd
@Echo off
If "%~1" neq "" goto :HasArgs
Echo restart with parms
"%~0" "parms"

:HasArgs
Echo %0 started with %*
Pause
Exit /B

示例运行:

> SU_1298393.cmd
restart with parms
"SU_1298393.cmd" started with "parms"
Press any key to continue . . .

> SU_1298393.cmd foo bar
SU_1298393.cmd started with foo bar
Press any key to continue . . .

相关内容