使用GOTO

使用GOTO

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

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

到目前为止,我已经找到了可以在批处理文件中写入以下代码的方法:

@echo off
start "C:\Program Files\Mozilla Firefox\firefox.exe" "http://testmywebsiteloadspeed.com"
ping -n 1 -w 60 

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

答案1

使用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
  • :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

每次循环运行时,该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
)

分解FOR /l命令:

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

相关内容