3

我正在尝试编写一个批处理脚本以在 10 个不同的命令提示符中运行无限循环,但这似乎无法正常工作。它打开命令提示符并消失,我已经在下面发布了脚本,请告诉我确切的位置是问题所在。

 for /l %%x in (1, 1, 10) do (

start cmd /c ":up echo loop && goto up"

 )
4

4 回答 4

4
for /l %%a in (0) do start "%~f0"
于 2013-07-18T07:40:32.620 回答
3

我认为有两个问题阻碍了功能(你想要)。

  1. 通过使用 echo 将打印该行的所有剩余部分(即使您使循环正常工作)。
  2. 使用标签需要使用脚本文件。您不能在控制台中使用标签。(我的意思是交互:尝试一下,输入 a :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

在我写下来的时候,马丁已经给出了同样的答案。也许这对你来说已经足够有说服力了。

于 2013-07-18T07:52:27.817 回答
2

您的批处理不起作用,因为标签需要在命令之前换行,而您甚至没有&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
于 2013-07-18T08:06:35.760 回答
2

我会在 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 命令。

马丁

于 2013-07-18T07:41:09.737 回答