6

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

@echo off                                                                     
:loop1                                                                              
Start taskmgr.exe                                                       
Goto loop                                                                         
:loop2                                                                             
Start cmd.exe                                                                 
goto loop2     

如何循环loop1和几次并转到loop2?

任何有用的答案将不胜感激:)

4

5 回答 5

6

如果你打开一个命令窗口并输入 FOR /? 它会给你你正在寻找的命令。

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)
于 2013-10-02T13:27:59.703 回答
5

由于我忽略的原因,该FOR命令不适用于循环特定标签。例如(我可能错了):

@echo off
for /L %%a in (1,1,2) do (
goto loop
)

:loop
echo this won't loop for 2 times.

这将简单地循环无限次。所以,我找到了一种简单的替代方法,可以根据需要循环标签多次。为此,我创建了一个变量,这样loop每次标签重复时都会有一个更大的数字。

有一个例子:

@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。
  • if "%loop%"=="2" goto next测试变量loop是否等于2(因此重复了 2 次);如果相等,则转到 label :next,否则将转到 label :loop
于 2017-01-23T16:09:03.930 回答
4

这是一个例子:

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

for /L %%a in (1,1,10) do (                                                        
Start cmd.exe                                                                 
)
于 2013-10-02T13:45:11.210 回答
2
@echo off
set /a a=1
goto loop
:loop
echo looped %a% times so far
set /a a=%a%+1
if %a%=10 (
echo looped a total of %a% times
)

你也可以使用这个命令:

@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 已打开”的命令提示符。rem是一个可以用来写评论的命令。

于 2019-06-16T18:04:15.157 回答
0

尝试这个:

@echo off
set loopvar=1
:repeat
if %loopvar% gtr 5 (goto :done) else (set /a loopvar=%loopvar%+1 && echo Loop && goto :repeat)
:done

在 :done 下,编写您希望它在循环后执行的代码。确保将五个替换为您希望循环重复的次数。对于循环延迟,试试这个:

@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)

希望它有所帮助!

于 2021-01-05T17:43:13.173 回答