使用批处理脚本在多个命令提示符中运行无限循环

时间:2013-07-18 07:17:21

标签: batch-file

我正在尝试编写批处理脚本以在10个不同的命令提示中运行无限循环,但这似乎不能正常工作。它打开命令提示并消失,我已经发布了下面的脚本请让我知道问题究竟在哪里。

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

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

 )

4 个答案:

答案 0 :(得分:4)

for /l %%a in (0) do start "%~f0"

答案 1 :(得分:3)

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

  1. 通过使用echo,将打印所有剩余的行(即使您使循环工作)。
  2. 使用标签需要使用脚本文件。您无法在控制台中使用标签。 (我的意思是交互式:尝试一下,输入:label,输入其他一些行,然后输入转到label。然后你就不会进入循环!)
  3. 当我用于 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

    当我写这篇文章时,马丁已经给出了同样的回答。也许这对你来说足够令人信服。

答案 2 :(得分:2)

您的批处理无效,因为标签在命令之前需要新行,而您在&之后甚至没有: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

答案 3 :(得分:1)

我会在2个不同的批处理文件中执行此操作。

1个文件是启动,并打开第2批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,您将看到它使用pause命令打开10个新的命令窗口。

马丁