Войти

Показать полную графическую версию : [решено] Сделать задержку, размер которой определить по названию файла


Alexander_88
06-07-2018, 02:47
Здравствуйте, вроде знаю как делать простую задержку, но вот как сделать задержку, длительность которой всегда нужно делать разную...
Ее размер в минутах показывает название файла Sleep - n (где n цифра)
Например имя файла "Sleep - 5"
Это значит, что нужно сделать задержку в 5 минут..
После окончания задержки нужно удалить файл с именем "block" и завершить выполнение скрипта.
В названии файлов нету расширений.

Iska
06-07-2018, 08:54
@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq tokens=2 delims=- " %%i in (`2^>nul dir /b /a:-d "%~dp0Sleep - *."`) do set /a iDelay = %%i * 60

if defined iDelay (
timeout.exe /t %iDelay% /nobreak
del "block."
)

endlocal
exit /b 0

Alexander_88
06-07-2018, 12:22
Спасибо, все работает, даже таймер обратного отчета есть :)

Iska
06-07-2018, 12:48
…даже таймер обратного отчета есть »
Ну, за это спасибо следует сказать Microsoft Corp., я тут не при чём :).

Alexander_88
08-07-2018, 17:59
ой ой... протестил на win server.. но надо то чтобы на ХР работало, а там видимо нету timeout.exe программы)

alpap
08-07-2018, 18:14
Alexander_88,
замените ее на:

:: Задержка на кол-во сек-1 (в данном случае на 15сек)
>nul ping -n 16 127.0.0.1

Iska
08-07-2018, 18:17
но надо то чтобы на ХР работало, а там видимо нету timeout.exe программы »
Нету.
@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq tokens=2 delims=- " %%i in (`2^>nul dir /b /a:-d "%~dp0Sleep - *."`) do set /a iDelay = %%i * 60 - 1

if defined iDelay (
>nul ping.exe -n %iDelay% 127.0.0.1
del "block."
)

endlocal
exit /b 0

Alexander_88
08-07-2018, 19:11
Спасибо, работает на XP :)




© OSzone.net 2001-2012