Пакетный файл ЕСЛИ Время выполнения заявления

Я пытаюсь написать командный файл, который занимает время, затраченное командой, и преобразует его в часы, минуты и секунды.

Вот что у меня есть:

@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 в цикле, а также использовать переменную в том же цикле, или вложенный набор циклов.

Другие вопросы по тегам