Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 如何使批处理脚本只循环一定次数?_Loops_Batch File_Echo - Fatal编程技术网

Loops 如何使批处理脚本只循环一定次数?

Loops 如何使批处理脚本只循环一定次数?,loops,batch-file,echo,Loops,Batch File,Echo,如何仅将批处理脚本循环一定次数(x10或其他)? 如果代码为: @echo off :loop1 Start taskmgr.exe

如何仅将批处理脚本循环一定次数(x10或其他)? 如果代码为:

@echo off                                                                     
:loop1                                                                              
Start taskmgr.exe                                                       
Goto loop                                                                         
:loop2                                                                             
Start cmd.exe                                                                 
goto loop2     
如何循环loop1和几次并转到loop2


如果您打开命令窗口并键入/,请提供任何有用的答案:)

?它将为您提供所需的命令

FOR /L %variable IN (start,step,end) DO command [command-parameters]

The set is a sequence of numbers from start to end, by step amount.
So (1,1,5) would generate the sequence 1 2 3 4 5 and (5,-1,1) would
generate the sequence (5 4 3 2 1)
以下是一个例子:

@echo off                                                                     
for /L %%a in (1,1,10) do (
Start taskmgr.exe          
)                                             

for /L %%a in (1,1,10) do (                                                        
Start cmd.exe                                                                 
)
@echo off
set loop=0
:loop
echo hello world
set /a loop=%loop%+1 
if "%loop%"=="2" goto next
goto loop

:next
echo This text will appear after repeating "hello world" for 2 times.

出于我忽略的原因,
For
命令对于循环特定标签不起作用。 例如(我可能错了):

这将简单地循环无限次。因此,我找到了另一种简单的方法,可以循环标签任意多次。为此,我创建了一个变量,如
loop
,每当标签重复时,该变量的数值会更大

有一个例子:

@echo off                                                                     
for /L %%a in (1,1,10) do (
Start taskmgr.exe          
)                                             

for /L %%a in (1,1,10) do (                                                        
Start cmd.exe                                                                 
)
@echo off
set loop=0
:loop
echo hello world
set /a loop=%loop%+1 
if "%loop%"=="2" goto next
goto loop

:next
echo This text will appear after repeating "hello world" for 2 times.
输出:

hello world
hello world
This text will appear after repeating "hello world" for 2 times.
说明:

  • set loop=0
    将变量
    loop
    的值设置为0
  • set/a loop=%loop%+1
    每次重复标签
    :loop
    时都会添加1
  • 如果“%loop%”==“2”转到下一步
    测试变量
    loop
    是否等于
    2
    (因此重复了2次);如果它相等,它将转到标签
    :next
    ,否则它将转到标签
    :loop
您还可以使用以下命令:

@echo off
for /l %%a in (1,1,10) do (
rem %%a is a variable and starts at a value of 1, steps by 1 and ends at a value of 10
start "Command Prompt #%%a Opened" cmd
rem eg Command Prompt #1 Opened
rem eg Command Prompt #2 Opened
rem etc
)
打开标题为“命令提示符#%%a已打开”的命令提示符。是一个可用于写入的命令。

请尝试以下操作:

@echo off
set loopvar=1
:repeat
if %loopvar% gtr 5 (goto :done) else (set /a loopvar=%loopvar%+1 && echo Loop && goto :repeat)
:done
在:done下,编写循环后希望它执行的代码。确保将5替换为希望循环重复的次数。 对于循环中的延迟,请尝试以下操作:

@echo off
set loopvar=1
:repeatwithdelay
if %loopvar% gtr 5 (goto :done) else (set /a loopvar=%loopvar%+1 && timeout /T 1 >nul && echo Loop && goto :repeatwithdelay)

希望有帮助

在您的第一个代码中,可能存在重复的被剪断的代码将
转到循环
替换为
调用:循环
(注意:
对于
转到
是可选的,但是
调用
需要它)并且它会起作用。这两种方法都是多年前建议的。您的答案如何增加附加值?我只是使用了一些批处理文件中的一个示例。@Stephan对于和循环变量引用,
没有这样的示例