mugil_cephalus
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору wolf0425 из идеологических соображений (не хочу использовать VBS (это оффтоп, ИМХО) и ping -n localhost (как не рекомендовали в шапке)) - "только "язык" батников и ничего кроме" , написал себе sleep-батник с иной конструкцией - schtasks - он еще "сырой", я не закончил его тестировать, и вижу много возможностей для оптимизации кода профи с форума, но я дальнейшую оптимизацию - читай сокращение скрипта - не осилю... @echo off cls :morpheus set dirPathMorpheus1=%temp% set jobMorpheus1=morpheus1J.job set waitModifierMorpheus1=1 set outputMorpheus1=nul echo schtasks /delete /tn %jobMorpheus1:~0,-4% /f > %dirPathMorpheus1%\morpheus1T.bat 2>&1 echo I have woken up! > %dirPathMorpheus1%\typeme2.txt 2>&1 echo ren %dirPathMorpheus1%\typeme2.txt typeme1.txt >> %dirPathMorpheus1%\morpheus1T.bat 2>&1 :if_exist_%jobMorpheus1% if exist %systemroot%\tasks\%jobMorpheus1% (goto exist_%jobMorpheus1%) schtasks /create /ru *** /rp *** /sc minute /mo %waitModifierMorpheus1% /tn %jobMorpheus1:~0,-4% /tr %dirPathMorpheus1%\morpheus1T.bat goto typeme :exist_%jobMorpheus1% schtasks /delete /tn %jobMorpheus1:~0,-4% /f goto if_exist_%jobMorpheus1% :typeme @echo off echo Please wait... rem Countdown: The result has not been counted up yet. rem setlocal enabledelayedexpansion rem for /f "tokens=* usebackq" %%A (`schtasks /query`) do (if /i %jobMorpheus1:~0,-4% eql %%A (set endTimeMorpheus1=%%B)) rem echo Countdown: !countdownMorpheus1! type %dirPathMorpheus1%\typeme1.txt > %outputMorpheus1% 2>&1 if %ErrorLevel% neq 0 goto typeme cd /d %dirPathMorpheus1% del /q morpheus1T.bat typeme1.txt set dirPathMorpheus1= set jobMorpheus1= set waitModifierMorpheus1= set outputMorpheus1= echo Morpheus has finished. pause P.S. да countdown еще не расчитал... Добавлено: wolf0425 Цитата: для секундной паузы где-то в шапке была sleep.exe - но ее же таскать надо, пинг в этом смысле удобнее - он везде есть. Кстати боюсь что про 50% загрузки - это тебя процессор обманывает: запусти батник без пинга параллельно с просмотром видео, что-ли. | батник без ping'a дает: ~50%, где 30%-40% у cmd.exe и ~10% у какого-то csrss.exe далее: + запуск *.mp4 -> без изменений (wmplayer.exe еще - ~3%-5%) всего процессов: ~55 wolf0425 я сейчас понял (если не ошибся) , как в подпрограмме :typeme избежать ~50% загрузкии CPU: в подпрограмме :typeme нужно запустить notepad или калькулятор (или что-то подобное - явно не нужное/не запущенное - (или winmine.exe, mshearts.exe, %SystemRoot%\system32\timedate.cpl)) без комманды start, чтобы cmd (выполнение батника) "зависло"/ожидало закрытия notepad'a или калькулятора, а в подпрограмме :morpheus вбить код echo taskkill notepad/calc.exe > %dirPathMorpheus1%\morpheus1T.bat 2>&1 добавление: еще лучше в в подпрограмме :typeme запуск без команды start *.vbs-файла с примерно таким кодом wscript.echo Please wait %waitModifierMorpheus1% minute(s).... |