Пакетный файл ЕСЛИ Время выполнения заявления
Я пытаюсь написать командный файл, который занимает время, затраченное командой, и преобразует его в часы, минуты и секунды.
Вот что у меня есть:
@echo off
set /a sec=0
set /a min=0
set /a hrs=0
for /f %%G in ('ping localhost -n 100 >nul') do (
ping localhost -n 1 >nul
set /a sec+=1
if %sec%==60 (
set /a min+=1
set /a sec=0
)
if %min%==60 (
set /a hrs+=1
set /a min=0
)
)
echo Time taken: %hrs%:%min%:%sec%.
Я продолжаю получать ") было неожиданно в это время." ошибка. Цикл FOR определенно работает, и проблема заключается только в операторах IF.
Я попытался использовать оператор EQU и добавить кавычки безрезультатно. Кто-нибудь может помочь?
Кроме того, я где-то читал, что оператор set может не работать в операторе IF - это правда?
1 ответ
Вы должны использовать это в верхней части вашего командного файла
setlocal enabledelayedexpansion
и !sec!
а также !min!
синтаксис вместо использования %
изменить и использовать переменные в цикле.
Без отложенного расширения вы не можете изменить переменную, используя set в цикле, а также использовать переменную в том же цикле, или вложенный набор циклов.