我正在尝试编写一个批处理脚本以在 10 个不同的命令提示符中运行无限循环,但这似乎无法正常工作。它打开命令提示符并消失,我已经在下面发布了脚本,请告诉我确切的位置是问题所在。
for /l %%x in (1, 1, 10) do (
start cmd /c ":up echo loop && goto up"
)
我正在尝试编写一个批处理脚本以在 10 个不同的命令提示符中运行无限循环,但这似乎无法正常工作。它打开命令提示符并消失,我已经在下面发布了脚本,请告诉我确切的位置是问题所在。
for /l %%x in (1, 1, 10) do (
start cmd /c ":up echo loop && goto up"
)
for /l %%a in (0) do start "%~f0"
我认为有两个问题阻碍了功能(你想要)。
:label
,输入其他行,然后输入 goto label
。然后你就不会进入循环了!)当我用于caller.cmd 时:
for /l %%x in (1, 1, 10) do (
start cmd /c test.cmd
)
对于test.cmd:
:up
echo loop
goto up
它有效(至少对我来说......)
即使我用于test.cmd:
:up
echo loop && goto up
有用。但是每个控制台都会显示loop && goto up
而不是loop
!
在我写下来的时候,马丁已经给出了同样的答案。也许这对你来说已经足够有说服力了。
您的批处理不起作用,因为标签需要在命令之前换行,而您甚至没有&
after :up
。我会这样:
If Not %1.==. GoTo :Up
For /L %%i In (1,1,10) Do Start "%~nx0 %%i" Cmd /C %0 %%i
GoTo :EOF
:Up
Echo %1
GoTo :Up
我会在 2 个不同的批处理文件中执行此操作。
1个文件是启动,打开第二批10次。
在第二批中,您将完成任何您想做的工作。
第 1 批(start.bat):
for /l %%x in (1, 1, 10) do (
start "loop" loop.bat
)
pause
第 2 批(loop.bat):
REM Whatever work you want to be looping, for testing I have left it as a pause.
pause
然后只需运行 start.bat,您将看到它打开了 10 个新的命令窗口,全部使用 pause 命令。
马丁