批处理文件与params一起运行的正确方法是什么?


1

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


你的意思是另一个 额外 实例,目前的运行?
LotPings

是的我知道,谢谢
Mark Deven

Answers:


2

我会开始第二个cmd shell,类似于:

启动“”Cmd.exe%~0参数

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


正是我在寻找什么,不知道为什么我没有想到这一点。谢谢!!
Mark Deven

1

要从批处理文件中调用另一个批处理文件,请使用 call "name of script.bat" 或者“开始”script.bat的名字“

虽然你可以不用它,但是会发生意想不到的结果,因为它会不断调用自己。

从技术上讲,你可以写

%0 MyParam

1

要避免无限循环,请检查是否存在args:

:: 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 . . .

这只是在特定情况下,但谢谢!
Mark Deven
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.