Ну, это не так уж сложно. Существует множество известных пакетных приемов, таких как неправильное использование ping для сна (что избавляет вас от необходимости интегрировать нестандартный инструмент), и тогда мы можем придумать следующее:
@echo off
setlocal
set n=0
:start
ren test.g test.go
ping localhost -n 26>nul 2>&1
ren test.go test.g
set /a n+=25
if %n% LSS 300 goto start
endlocal
setlocal
и endlocal
гарантируют, что все переменные среды, которые мы создаем и изменяем, останутся только в области действия самого пакетного файла. Команда
ping localhost -n 26 >nul 2>&1
будет ждать 25 секунд (потому что первый пинг будет немедленным, а каждый последующий - с задержкой в одну секунду), отбрасывая все нормальные и ошибочные выходные данные (>nul 2>&1
).
Наконец, мы отслеживаем, как долго мы ждали в переменной %n%
, и только если n все еще ниже 300, мы продолжаем цикл. Вы могли бы также сделать это с помощью цикла for:
@echo off
setlocal
set n=300
set /a k=n/25
for /l %%i in (1,1,%k%) do (
ren test.g test.go
ping localhost -n 26>nul 2>&1
ren test.go test.g
)
endlocal
, который сначала вычислит, как часто нужно будет зацикливаться, а затем просто итерирует рассчитанное количество раз.