2

Я использую Windows 10 Professional. Я хочу создать командный файл:

  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 ответ1

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

  • Первый аргумент - это то, с чего вы начинаете.
  • Второй аргумент - насколько велик шаг. (Это не относится к вашему конкретному примеру, поскольку вы вообще не используете это значение.)
  • Третий аргумент - когда остановиться.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .