我有一个批处理文件。其中,我需要使用参数在新窗口中启动它的另一个副本。我尝试了该命令,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 . . .