在循环中重复程序

Cur*_*Dev 2 windows batch-file windows-10

我正在使用 Windows 10 专业版。我想创建一个批处理文件:

  1. 打开火狐浏览器,
  2. 导航到一个页面
  3. 一分钟后关闭浏览器。
  4. 重复步骤 1 到 3。

到目前为止,我想出了以下代码来写入我的批处理文件:

@echo off
start "C:\Program Files\Mozilla Firefox\firefox.exe" "http://testmywebsiteloadspeed.com"
ping -n 1 -w 60 
Run Code Online (Sandbox Code Playgroud)

但这没有任何作用。另外我如何实现 3 & 4?

Wor*_*lle 5

使用 GOTO

尝试以下批次:

@echo off
set loopCount=50
:loop
start "C:\Program Files\Mozilla Firefox\firefox.exe" "http://testmywebsiteloadspeed.com"
set /a loopCount=%loopCount%-1
if %loopCount%==0 GOTO:EOF
timeout /t 60
taskkill /im firefox.exe
timeout /t 5
GOTO :loop
Run Code Online (Sandbox Code Playgroud)
  • :loop定义一个GOTO点。
  • timeout /t 60 等待 60 秒
  • taskkill /im firefox.exe 将杀死 Firefox 进程
  • GOTO :loop 将重新路由回脚本的开头。

注意:这将杀死所有正在运行的 Firefox 进程。我认为 Firefox 通常一次只允许一个。

有限循环使用 GOTO

为了针对特定次数的迭代执行此操作,您可以使用set /a对 loopCount 变量进行一些数学运算。

@echo off
set loopCount=50
:loop
start "C:\Program Files\Mozilla Firefox\firefox.exe" "http://testmywebsiteloadspeed.com"
set /a loopCount=%loopCount%-1
if %loopCount%==0 GOTO:EOF
timeout /t 60
taskkill /im firefox.exe
timeout /t 5
GOTO :loop
Run Code Online (Sandbox Code Playgroud)

set /a loopCount=%loopCount%-1每次循环运行时,该行都会将 loopCount 的值减一。该if %loopCount%==0 GOTO:EOF行将在达到 0 时退出脚本。

GOTO:EOF 表示“转到文件末尾”,这将绕过文件中的任何其他代码。

使用 FOR /l

另一种解决方案是使用FOR带有/l开关的循环,但是在使用嵌套循环时我遇到了这个问题,所以我通常坚持使用GOTO像这样的简单批处理文件的选项。不过,我希望这会在将来对某人有所帮助。

@echo off
for /l %%x in (1, 1, 50) do (
    start "C:\Program Files\Mozilla Firefox\firefox.exe" "http://testmywebsiteloadspeed.com"
   set /a loopCount=%loopCount%-1
   if %loopCount%==0 GOTO:EOF
   timeout /t 60
   taskkill /im firefox.exe
   timeout /t 5
)
Run Code Online (Sandbox Code Playgroud)

分解FOR /l命令:

  • 第一个参数是你开始的地方。
  • 第二个论点是要迈出多大的一步。(这与您的特定示例无关,因为您根本不使用该值。)
  • 第三个论点是什么时候停止。