В бат файле пауза: PAUSE – пауза при выполнении командного файла.
Содержание
Задержка в bat-файле
← →
Megabyte ©
(2007-04-03 13:43)
[0]
Возможно ли как-нибудь организовать задержку(аля sleep в Дельфи) в bat-файле с помощью команд интепретатора?
Нужно вот для чего: 2 программы запускаются одновременно в автозагрузке. Надо сделать так, чтобы запускать их с временным сдвигом. Программы идентичные, но с разными настройками. Поэтому, не хочется делать задержку в самой программе, чтобы не уходить от стандарта.
← →
Kerk ©
(2007-04-03 13:44)
[1]
Запускай через start
← →
Чапаев ©
(2007-04-03 13:45)
[2]
Нельзя. Только в XP x64 есть встроенные средства, насколько я знаю.
← →
Ega23 ©
(2007-04-03 13:46)
[3]
цикл, вроде, можно организовать. И на дату внутри проверять…
← →
StriderMan ©
(2007-04-03 13:47)
[4]
wait
← →
Megabyte ©
(2007-04-03 13:48)
[5]
> Kerk © (03.04.07 13:44) [1]
Запускай через start
Как запускать, я знаю. Задержку надо.
> Чапаев © (03.04.07 13:45) [2]
Ясно. :/
← →
Чапаев ©
(2007-04-03 13:48)
[6]
«wait» не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
← →
StriderMan ©
(2007-04-03 13:50)
[7]
> Чапаев © (03.04.07 13:48) [6]
да, пардон, а вроде пользовался. ..
как вариант написать самому консольную тормозилку 🙂
← →
Axis_of_Evil ©
(2007-04-03 13:53)
[8]
ping 127.0.0.1 -n задержка_в_секундах+1
← →
axis_of_evil ©
(2007-04-03 13:53)
[9]
Axis_of_Evil © (03.04.07 13:53) [8]
ping 127.0.0.1 -n задержка_в_секундах+1 > null
← →
Чапаев ©
(2007-04-03 13:55)
[10]
> [3] Ega23 © (03.04.07 13:46)
Там с точностью до минуты…
← →
Megabyte ©
(2007-04-03 13:56)
[11]
> Ega23 © (03.04.07 13:46) [3]
цикл, вроде, можно организовать. И на дату внутри проверять. ..
Да, я хотел цикл организовать, не с датой, конечно, а со своей переменной. Но что-то такой код не прокатывает. 🙂SET tvar=1
:add
SET tvar=tvar+1
IF NOT tvar==10 (GOTO :add PAUSE) ELSE (CALL F:\Distrib\mail\get_reports.exe)
Я до этого батники не писал, в операциях плохо ориентируюсь. Думаю, такая фигня tvar=tvar+1 не прокатит.
← →
Чапаев ©
(2007-04-03 13:58)
[12]
> [11] Megabyte © (03.04.07 13:56)
for /?
А call применима только к батникам. Не к экзешникам.
← →
Megabyte ©
(2007-04-03 13:58)
[13]
Хм, ping в принципе прокатит 🙂 Спасибо
← →
Megabyte ©
(2007-04-03 13:59)
[14]
Нет, call можно для exe применять
← →
{RASkov}
(2007-04-03 14:17)
[15]
@for /l %%а in (1,1,200000) do @rem
или
for /l %%р in (1,1,20000) do @Echo %%p >Nul
← →
{RASkov}
(2007-04-03 14:20)
[16]
> Думаю, такая фигня tvar=tvar+1 не прокатит.
@echo off
set n=0
:a
cls
set /a n=n+1
echo N = %n%
pause
goto a
← →
SlymRO ©
(2007-04-03 14:22)
[17]
run.vbsDim Shell,Pipe
Set Shell = CreateObject("WScript.Shell")
Set Pipe = Shell.Exec("progra1.exe")
while(Pipe.status=0)
WScript.Sleep 50
Wend
WScript.Sleep 2000
Set Pipe = Shell.Exec("progra2.exe")
while(Pipe.status=0)
WScript.Sleep 50
Wend
← →
Megabyte ©
(2007-04-03 14:43)
[18]
Ого, всем спасибо 🙂
Пауза в cmd
Home » Misc » Пауза в cmd
BAT/CMD. Задержка (тайм-аут), пауза, аналог команды sleep Linux в DOS/Windows
Почему-то Вовчик Воротов еще со времен DOS не мог в командный процессор добавить встроенную команду sleep
<секунд>, которая обеспечивает паузу в скрипте BAT/CMD, как это делается в том же bash. Но есть насколько решений.
CHOICE
.Совместимость: командные процессоры, начиная с DOS 6.00, включая все версии Windows.
Утилита CHOICE.EXE
изначально предназначена для запроса ответа пользователя (Да/нет), например, вызов команды
choice /M "Request Text"
где,"Request Text"
— текст вопроса
отобразит в консоли следующее:
Request Text [Y,N]?
Пользователь должен будет нажать клавишу Y
или N
, код возврата можно будет отследить в BAT-скрипте в переменной %ERRORLEVEL%
, Y
— 1
N
— 2
.
Однако, можно сделать из команды CHOICE
задержку в скрипте, используя следующий синтаксис:
choice /T [секунд] /D [любой_символ] >nul
где,/T [секунд]
— включить задержку на [секунд]
секунд. /D [любой_символ]
— ответ по умолчанию (без него не будет работать параметр /T
).>nul
— отправить вывод сообщения команды в >nul
, дабы не загрязнять вывод скрипта.
Например:
choice /T 1 /D y >nul
установит задержку в одну секунду.
+ Максимально совместимая команда, начиная с DOS 6.00.
— Не является встроенной командой, может отсутствовать в сборках Windows/DOS или образах Windows PE/загрузочных образах DOS
— Команда может спровоцировать зависание скрипта на неопределенный срок, если скрипт был вызван в определенных условиях, когда командный процессор cmd.exe
был вызван иным приложением Windows, выполняющим перехват STDOUT
консоли.
Справка по команде
TIMEOUT
Совместимость: Windows 7 и выше.
Синтаксис:
timeout /T [секунд]
илиtimeout [секунд]
где,[секунд]
— время в секундах.
+ К Windows 7 Вовчик Воротов таки озаботился командой, позволяющей делать стандартную задержку в BAT-скриптах.
— Нет в более ранних версиях Windows и DOS
— Если BAT-файл запущен в приложении, перехватывающем STDOUT
(консольный вывод), могут случиться необоснованные глюки.
— Не является встроенной командой, может отсутствовать в сборках Windows или образах Windows PE
Пример:
timeout /T 1 >nul
Справка по команде
WAITFOR
Совместимость: Windows 7 Professional и выше.
Вообще эта команда предназначена для другого, она отправляет или ожидает системного сообщения. Примерно того же, чем являются системные сообщения в Linux, например SIGTERM
и SIGKILL
, хотя и весьма условно — в Windows они устроены несколько по-другому. Если программе указать заведомо несуществующее системное сообщение и время ожидания — программа сработает как пауза в BAT/CMD скрипте:
waitfor /T [время] [сообщение(строка)] 1>nul 2>nul
где,
/T [время]
— [время]
время ожидания, секунд. [сообщение(строка)]
— можно использовать любую случайную строку, не совпадающую с известными системными сообщениями.1>nul
— перенаправление стандартного потока вывода (STDOUT
) в устройство nul
.2>nul
— перенаправление стандартного потока ошибок (STDERR
) в устройство nul
.
Два последних переопределения используются для того, чтобы не замусоривать вывод скрипта.
Пример (скрипт будет ожидать 1 секунду):
waitfor /T 1 zhzhz 1>nul 2>nul
+ Не вызывает зависаний при перехвате консольного вывода скрипта внешним приложением
— Нет в более ранних версиях Windows/DOS
— Не является встроенной командой, может отсутствовать в сборках Windows или образах Windows PE
Справка по команде
ping
Совместимость: DOS, с установленными программами поддержки сети, все версии Windows
ping
на locallhost
можно использовать, как команду для задержки в BAT-файле. Хотя, этот способ не рекомендуется использовать, т.к. время задержки может отличаться в зависимости от количества отправленных пакетов, «железа» компьютера или версии ОС.
Пример:
ping -n 3 127.0.0.1 >nul
127.0.0.1
— IP-адрес localhost
-n 3
, т.е. 3 пакета отправленные на localhost
дают примерное время ожидания в 1 секунду на Windows 7, на ноутбуке HP Pavilion
+ Есть во всех версиях Windows/DOS где есть стандартная поддержка сети от MS
+ При перехвате STDOUT
не глючит
— Время задержки определяется весьма приблизительно.
Самостоятельных реализаций sleep/timeout написана вагон и маленькая тележка. Например, одну из них можно скачать на GitHub:
sleep (console application)
Запуск:
sleep <секунд>
Пример:
sleep 1 >nul
+ Сбоев не обнаружено
+ Совместимость: Все версии Windows x86/x64
+ Имеются исходники, можно пересобрать под DOS при наличии компилятора Freepascal.
— Внешняя нестандартная утилита, придется таскать вместе с BAT/CMD файлом.
Впрочем, таких утилит много, все имеют свои плюсы и минусы. Выбирайте под конкретную задачу нужный вам способ.
Cmd задержка между выполнением команд — Dudom
Рассмотрим основные варианты организации ожидания ( паузы ) в bat / cmd файлах.
Для решения этой задачи в операционных системах, начиная с VISTA, присутствует команда timeout. Так, для ожидания 10 секунд следует выполнить команду.
Если не использовать параметр /NOBREAK, то ожидание может быть прервано нажатием любой клавиши.
Поскольку эта задача вставала перед разработчиками задолго до появления этой утилиты, те, у которых операционная система младше, могут воспользоваться накопившемся опытом.
Для организации паузы есть специальная утилита, входящая в состав Resource Kit (Ресурскита).
Пакеты Microsoft Windows Deployment Kit и Windows Resource Kit бесплатно распространяется microsoft.com. Этот пакет содержит ряд полезных и. как бы так сказать. других утилит.
Если вы уже устали бродить по бескрайним просторам сайта microsoft.com, постоянно возвращаясь на одни и те же страницы, то можете скачать эту утилиту здесь
Как и во многих других случаях, может помочь утилита nircmd.
(На момент написания страницы описание возможностей утилиты было здесь. C этим списком я рекомендую ознакомится, даже если для текущей задачи будет использовано другое решение.)
На просторах интернета можно найти утилиту wait.exe. Точнее, даже несколько разных, включая исходные тексты программы. Поэтому я не привожу здесь параметров вызова, смотрите их описание.
Для организации паузы можно использовать утилиты, ожидающих определенное событие заданное время.
При условии, что событие не наступит, получается ожидание требуемого интервала времени.
Так, паузу можно создать при помощи команды ping:
-n 1 — выполнить один запрос
-w 100000 — ждать ответа 100 секунд
(значение указывается в миллисекундах)
10. 10.254.254 — IP адрес, который заведомо не существует в локальной сети (важно!), следовательно, никогда не ответит на ping т. е. событие не наступит.
>nul — перенаправление всего вывода команды ping в никуда.
Еще одно решение — посылать пинг на заведомо существующий адрес — т. е. самому себе. Количество посылаемых пакетов должно быть на единицу больше количества ожидаемых секунд. Так, для ожидания 5 секунд следует выполнить команду:
В том же пакете Ресурскит есть утилита choice, которую при известной доле извращенности можно использовать для тех же целей:
Для любителей экзотики.
Можно вычислить время окончания интервала ожидания и занять чем-то несчастный процессор до наступления этого события. Как результат — пауза организована только средствами bat / cmd.
Привожу слегка исправленный пример, взятый с сайта http://www.oszone.net.
0,-3% :: пауза на 15 секунд call :sleep 15 :: Другие действия echo Сейчас %time:
0,-3% pause goto :EOF :sleep echo Пауза на %1 секунд. set /a ftime=100%time:
6,-3%%%100+%1 if %ftime% GEQ 60 set /a ftime-=60 :loop set ctime=%time:
6,-3% if /i %ftime% NEQ %ctime% goto :loop exit /b 0
Данная процедура позволит организовать задержку в выполнении. Время ожидания должно быть меньше 60 сек.
Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать раздел форума этого сайта (требуется регистрация).
Задержка времени (пауза, тайм-аут) в бат-файле
Вот, нашёл в Сети рабочий пример для устройства задержки времени
(пауза, тайм-аут) при выполнении команды в bat-файле:
echo wscript.Sleep 30000>»%temp%sleep30.vbs»
cscript //nologo «%temp%sleep30.vbs»
del «%temp%sleep30.vbs»
Работает в любой ОС Windows, аж бегом
Зачем нужна задержка (пауза, тайм-аут) при выполнении команды в bat-файле?
У всех – по-разному.
Лично мне она (пауза) понадобилась вот для чего:
– Взял простенький bat-файл для очистки временных папок и бросил его в АВТОЗАГРУЗКУ
Прикололся, типа – чтобы этот батничек чистил временные каталоги при запуске системы.
Текст батника вытащил из стандартного Total Commander-a:
cmd /c title Очистка временной папки &cd/d %temp%&rd/s/q %temp% 2>nul &cd/d %tmp%&rd/s/q %tmp% 2>nul &cd/d C:WindowsPrefetch &del *.pf 2>nul &cd/d C:WindowsTemp&rd/s/q c:windows emp 2>nul
Всё-бы ничего, да только такая процедура очистки временных папок при загрузке –
сносит полезные файлы и система выдаёт окно ошибки
Досадно.
Однако, устройство паузы в 30 сек. решило всю проблему.
И система грузится, и папки темпов — чистятся.
Полный текст bat-файла стал теперь таким:
echo wscript.Sleep 30000>»%temp%sleep30.vbs»
cscript //nologo «%temp%sleep30.vbs»
del «%temp%sleep30.vbs»
cmd /c title Очистка временной папки &cd/d %temp%&rd/s/q %temp% 2>nul &cd/d %tmp%&rd/s/q %tmp% 2>nul &cd/d C:WindowsPrefetch &del *.pf 2>nul &cd/d C:WindowsTemp&rd/s/q c:windows emp 2>nul
Прим. Лошади понятно, что изменив цифру 30 на своё значение,
можно получить другие величины паузы в секундах в bat-файле.
Начиная с VISTA, в операционных системах семейства Windows присутствует команда TIMEOUT. Эта команда принимает значение таймаута, равного фиксированному периоду времени ожидания (в секундах) до выполнения команды или ожидание до нажатия клавиши. Имеется также параметр, зaдающий игнорирование нажатий клавиш.
Синтаксис
TIMEOUT [/T] 50 [/NOBREAK]
Параметры
/T 50 Таймаут = 50 сек. Время ожидания в секундах. Допустимый интервал: от -1 до 99999 секунд. Значение, равное -1 задает неограниченное время ожидания до нажатия клавиши. /NOBREAK Игнорировать нажатия клавиш, ждать указанное время. /? Отображение справки в командной строке.
TIMEOUT /?
TIMEOUT /T 10
TIMEOUT /T 300 /NOBREAK
TIMEOUT /T -1
Весь текст примера можно внести в bat-файл,
запустить и посмотреть, как это работает.
Впечатляет.
Когда-то, еще в DOS, для организации ожидания в командном файле использовалась удобная команда SLEEP, но затем она почему-то перекочевала из стандартного установочного набора Windows в дополнительный Resource Kit. Можно просто скопировать его оттуда в каталог system32 и использовать в ваших командных файлах.
: SLEEP N — где N — количество секунд для задержки.
Если же Resource Kit нет под рукой, можно воспользоваться ранее рассмотренной командой CHOISE без вывода текста и с автоматическим формированием ответа через nn секунд (1-99):
choice.com /T:y,10 /N — задержка на 10 секунд
Более универсальный способ основан на пинговании петлевого интерфейса нужным количеством пакетов. Пинг для петлевого интерфейса (имя хоста — localhost или IP- адрес 127.0.0.1) выполняется без реальной передачи данных, т.е. практически мгновенно, а интервал между пингами составляет 1 секунду. Указывая количество пингов с помощью ключа «-n» можно получить задержку на n секунд:
ping 127.0.0.1 -n 30 > nul — даст задержку на 30 секунд
Поиск компьютеров с запущенным приложением
Для реализации этого скрипта используются утилиты из пакета PSTools (краткое описание). Создадим командный файл, выполняющий поиск в локальной сети компьютеров с выполняющейся программой, имя которой (начальная часть имени) задается в качестве параметра при запуске, например, game . При обнаружении будет послано сообщение на компьютер ADMINCOMP и обнаруженное приложение будет принудительно завершено. Для поиска будем использовать утилиту Pslist.exe и анализировать ее код возврата. Значение переменной ERRORLEVEL равное нулю означает, что утилита обнаружила на удаленном компьютере процесс, удовлетворяющий условиям поиска. Имя процесса для поиска будем задавать в качестве параметра при запуске командного файла. Присвоим нашему командному файлу имя psl.bat. Запуск с параметром будет выглядеть следующим образом:
psl.bat game
Для начала, нужно проверить, задан ли параметр в командной строке при запуске, и, если не задан, выдадим сообщение пользователю и завершим выполнение. Если же параметр задан — перейдем на метку » PARMOK «:
@echo off
if «%1» NEQ «» GOTO PARMOK
ECHO Нужно задать имя процесса для поиска
exit
:PARMOK
Теперь нужно обеспечить последовательное формирование IP-адресов компьютеров для командной строки PSlist. Проще всего это сделать с помощью присвоения временной переменной окружения (действительной только на время выполнения командного файла) значения постоянной составляющей адреса (например — 192.168.0.) и вычисляемого значения младшей части (например, в диапазоне 1-254). Для примера будем считать, что нам необходимо просканировать компьютеры в диапазоне адресов:
192.168.0.1 — 192.168.0.30:
set IPTMP=192.168.0. — старшая часть адреса
set /A IPLAST=1 — младшая часть. Ключ /A означает вычисляемое числовое выражение
set IPFULL=%IPTMP%%IPLAST% — значение полного IP-адреса.
Командная строка для PSlist будет выглядеть cледующим образом:
pslist \%IPFULL% %1
Теперь осталось только циклически запускать PSlist, прибавляя в каждом цикле единицу к младшей части адреса, пока ее значение не достигнет 30 и анализировать значение ERRORLEVEL после выполнения. Для анализа результата будем выполнять переход командой:
GOTO REZULT%ERRORLEVEL%
обеспечивающей переход на метку REZULT0 при обнаружении процесса и на REZULT1 — при его отсутствии.
Окончательное содержимое командного файла:
@echo off
if «%1» NEQ «» GOTO PARMOK
ECHO Нужно задать имя процесса для поиска
exit
:PARMOK
set IPTMP=192.168.0.
rem Зададим начальное значение » хвоста » IP- адреса
set /A IPLAST=1
rem M0 — метка для организации цикла
:M0
rem Переменная IPFULL — полное значение текущего IP-адреса
set IPFULL=%IPTMP%%IPLAST%
rem Если » хвост «больше 30 — на выход
IF %IPLAST% GTR 30 GOTO ENDJOB
pslist \%IPFULL% %1
GOTO REZULT%ERRORLEVEL%
:REZULT0
rem Если найдено приложение- отправим сообщение на ADMINCOMP
net send ADMINCOMP Запущено %1 — %IPFULL%
rem И завершим приложение с помощью PSkill
pskill \%IPFULL% %1
:REZULT1
rem Сформируем следующий IP-адрес
set /A IPLAST=%IPLAST% + 1
rem Перейдем на выполнение следующего шага
GOTO M0
rem Завершение работы
:endjob
exit
В заключение добавлю, что для того, чтобы этот скрипт работал, PSlist. exe и PSkill.exe должны быть доступны в путях поиска исполняемых файлов, например в каталоге WINDOWS. Пользователь, запускающий его, должен обладать правами администратора по отношению к сканируемым компьютерам. И, если текущий пользователь таковым не является, то в параметры запуска утилит PSlist.exe и PSkill.exe нужно добавить ключи, задающие имя пользователя и пароль.
Поиск компьютеров с запущенным приложением по списку
В предыдущем примере использовался прямой перебор IP-адресов компьютеров в локальной сети, что не всегда удобно, поскольку в процедуру опроса оказываются вовлечены и выключенные компьютеры. Решим задачу другим способом. Создадим текстовый файл со списком компьютеров и опросим их по этому списку.
Список можно получить из сетевого окружения с использованием команды:
net.exe view > comps.txt
После выполнения такой команды файл comps.txt будет содержать список следующего вида:
Обрабатывать содержимое этого текстового файла будем с помощью команды FOR с ключом /F:
FOR /F [«ключи»] %переменная IN (имя файла) DO команда [параметры]
Данная команда позволяет получить доступ к строкам в текстовом файле с использованием ключей:
skip=n — пропустить n строк от начала файла (в нашем случае — 4 строки)
eol= — не использовать строки, начинающиеся с заданного символа. (в нашем случае — пропустить последнюю строку, начинающуюся с символа «К» — «Команда выполнена успешно»
tokens=n — брать для обработки n-е слово в строке (в нашем случае — 1-е слово)
Окончательный вид команды:
FOR /F «eol=К skip=4 tokens=1 » %%I IN (comps.txt) DO (
pslist.exe -u admin -p pass %%I %1
IF NOT ERRORLEVEL 1 net.exe send ADMINCOMP %%i %1
)
Обратите внимание — в пакетных файлах для переменных команды FOR используется два знака процента (запись %%переменная вместо %переменная) и имена переменных учитывают регистр букв (%i отличается от %I).
Работать это будет следующим образом — пропускаются первые 4 строки текстового файла со списком компьютеров, и далее в цикле переменной I присваивается значение первого слова (текст от начала строки до разделителя — пробела), выполняется утилита PSlist.exe, для которой в качестве имени компьютера используется значение этой переменной. Если ERRORLEVEL менее 1 — задача с искомым именем присутствует в списке процессов и выполняется отправка сообщения с помощью NET SEND.
Окончательное содержимое командного файла:
@echo off
if «%1» NEQ «» GOTO PARMOK
ECHO Нужно задать имя процесса для поиска
exit
:PARMOK
REM
REM Создадим текстовый файл comps.txt со списком компьютеров с помощью NET VIEW
net view /DOMAIN:MyDomain > comps.txt
REM
REM FOR /F «параметры» — использование данных из файла
REM eol=К — не использовать строки, начинающиеся с «К» — «Команда выполнена успешно»
REM skip=4 — пропустить первые 4 строки в файле
REM tokens=1 — брать для обработки 1-е слово в строке
REM
FOR /F «eol=К skip=4 tokens=1 » %%i in (comps.txt) do (
pslist.exe -u admin -p pass %%i %1
IF NOT ERRORLEVEL 1 net.exe send %COMPUTERNAME% Компьютер — %%i процесс — %1
)
Не нашли то, что искали? Воспользуйтесь поиском:
Лучшие изречения: Для студентов недели бывают четные, нечетные и зачетные. 9667 —
| 7536 — или читать все.
пауза | Microsoft Узнайте
Редактировать
Твиттер LinkedIn Фейсбук Эл. адрес
- Статья
- 2 минуты на чтение
Приостанавливает обработку пакетной программы, отображая подсказку, Нажмите любую клавишу для продолжения. . .
Синтаксис
пауза
Параметры
Параметр | Описание |
---|---|
/? | Отображает справку в командной строке. |
Если нажать CTRL+C для остановки пакетной программы, появится следующее сообщение:
Завершить пакетное задание (Да/Нет)?
. Если вы нажмете Y (да) в ответ на это сообщение, пакетная программа завершится, и управление вернется к операционной системе.Вы можете вставить команду pause перед разделом пакетного файла, который вы не хотите обрабатывать. Когда пауза приостанавливает выполнение пакетной программы, вы можете нажать CTRL+C, а затем нажать Y , чтобы остановить пакетную программу.
Примеры
Чтобы создать пакетную программу, предлагающую пользователю сменить диск в одном из дисков, введите:
@echo off :Начинать скопируйте:*.* echo Поместите новый диск в дисковод A Пауза перейти к началу
В этом примере все файлы на диске диска A копируются в текущий каталог. После сообщения с предложением установить новый диск в дисковод А команда pause приостанавливает обработку, чтобы можно было заменить диски, а затем нажать любую клавишу для возобновления обработки. Эта пакетная программа выполняется в бесконечном цикле — команда goto begin отправляет интерпретатор команд на метку Begin пакетного файла.
Дополнительные ссылки
- Ключ синтаксиса командной строки
Обратная связь
Отправить и просмотреть отзыв для
Этот продукт Эта страница
Просмотреть все отзывы о странице
Командная строка
. Есть ли сочетание клавиш для приостановки вывода окна CMD во время его работы?
спросил
Изменено 2 года, 8 месяцев назад
Просмотрено 51к раз
Я выполняю пакетный сценарий, который занимает очень много времени и чьи выходные данные мчатся с нечитаемой скоростью. Есть ли сочетание клавиш, которое позволяет вам приостановить консоль CMD, где она в настоящее время находится, чтобы остановить и прочитать вывод, а затем снова запустить ее с того же места?
- windows
- командная строка
- сочетания клавиш
- cmd.exe
3
Я не видел этого в других ответах.
Я считаю, что последовательные управляющие последовательности ‘Ctrl-S’ XOFF и ‘Ctrl-Q’ XON являются ключевыми последовательностями, предназначенными для решения проблемы.
См.;
XON/XOFF
3
Есть ли на вашей клавиатуре клавиша Пауза/Перерыв ? Это хорошо послужило бы для этого. Вот как это выглядит или, по крайней мере, использовалось:
В качестве интересного бонуса этот ключ также можно использовать во время POST (тестирование при включении питания, которое запускается при включении компьютера) для считывания вывода с БИОС.
Если у вас нет этого ключа, комбинация Control + NumLock должна работать точно так же, и, согласно Википедии, существуют другие варианты в зависимости от вашего производителя.
Чтобы возобновить выполнение, нажмите Введите .
4
Вы можете использовать команду «больше». Хотя это не совсем то, что вы ищете, это ограничит вывод на экран страницы.
2
Добавление еще одного полезного способа для linux-оболочек . (Но может быть и в Windows тоже, попробуйте!)
Нажатие ctrl
+ z
зависнет программа. (Сообщение: остановлено)
, чтобы снова запустить его обратно в его предыдущем состоянии, например, если оно было приостановлено:
Тип FG
или для множественного использования: FG
Program_Name_PREVELY_CTRL+Z_STOPPPED
В системах Windows, если экран вывода включен Режим быстрого редактирования (по конфигурации), просто нажмите на экран и выберите любую часть экрана. Программа остановит выполнение до тех пор, пока вы не щелкнете правой кнопкой мыши по экрану, чтобы отменить выбор. Экран может потерять фокус, и он будет продолжать зависать, пока вы не вернетесь и не щелкнете по нему правой кнопкой мыши. Имейте в виду, что любое содержимое буфера обмена, если таковое имеется, может быть перевернуто на этот экран при щелчке правой кнопкой мыши.
Вы можете использовать ProcessExplorer или аналогичную программу TaskManager -> ПКМ для процесса, который выполняется внутри cmd (не самого основного процесса cmd) -> Suspend. Затем, когда вы снова захотите использовать RMB, -> возобновить
Примечание. Если вы используете ProcessExplorer для этого, вы можете оставить его открытым, пока не нажмете «Возобновить». Если вы вместо этого закроете его, а затем снова откроете, когда захотите возобновить процесс, я заметил, что иногда он дает сбой и не распознает, что текущее состояние этого процесса «Приостановлено»; таким образом, если вы нажмете «Возобновить» в этом случае, он может не возобновить его. Но если вы оставите PE открытым до тех пор, пока не захотите снова возобновить процесс, все будет работать нормально. Если вы беспокоитесь о ресурсах, которые Process Explorer может потреблять при его открытии, вы можете просто сделать «Просмотр» -> «Скорость обновления» -> «Приостановлено».
Здесь есть еще несколько методов, которые можно добавить, если быть внимательным:
1) В дополнение к кнопке Pause/Break вы можете продублировать ее функциональность, используя «CTRL+C».
Это приведет к паузе сценария cmd и спросит вас, хотите ли вы его завершить. Как только вы закончите поиск, вы можете выбрать «НЕТ» (или, возможно, да, если вам это подходит), и он продолжится (или выйдет, если вы выбрали «да»).
2) Вы также можете сделать паузу с помощью мыши, щелкнув курсором мыши в окне, чтобы выбрать текст из терминала CMD.
Возможно, вы замечали эту приостановку вывода в прошлом и думали, что задерживается только вывод, однако, когда сценарии выполняются в интерактивных экземплярах cmd, вы фактически приостанавливаете выполнение кода (так же, как с «Пауза/Перерыв» и Методы «CTRL+C»).
окон — Пакетный сценарий — Как сделать паузу (нажмите любую клавишу, чтобы продолжить.
..) при ошибке?
спросил
Изменено
1 год, 9 месяцев назад
Просмотрено
2к раз
Я хочу, чтобы мой сценарий выполнял команду pause
независимо от того, завершится ли сценарий или возникнет ошибка/исключение. 9& %0 %*) & выход )
в верхней части скрипта, но дайте Нажмите любую клавишу для продолжения. . . Опция для выхода/закрытия окна cmd.
- windows
- пакетный файл
- cmd
2
Спасибо! Вот что у меня получилось для общего пользования:
@echo off REM ################################################## ################################################### ####### REM-функции REM ################################################## ################################################### ####### перейти: главная REM ################################################## ################################################### ####### REM run_and_keep_window_open_with_press_key_to_close_window REM ################################################## ################################################### ####### :run_and_keep_window_open_with_press_key_to_close_window эхо "привет" sfgsdgfdfg перейти: eof REM ################################################## ################################################### ####### РЭМ Главная REM ################################################## ################################################### ####### :основной вызов: run_and_keep_window_open_with_press_key_to_close_window if %errorlevel% EQU 0 (пауза) else (цвет CF && пауза)
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя электронную почту и пароль
Опубликовать как гость
Электронная почта
Обязательно, но не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
пауза в командном файле не работает
спросил
Изменено
7 лет, 2 месяца назад
Просмотрено
4к раз
У меня есть пакетный файл, который проверяет, существует ли файл.
После этого необходимо сделать паузу.
Но пауза почему-то не работает.
Помогите пожалуйста. большое спасибо
если существует C:\autoexec.bat Папка ECHO C:\autoexec.bat существует ПАУЗА
Пауза работает в командной строке.
Файл точно существует. Но я не вижу ни Эха, ни Паузы.
Экран просто исчезает, как только я запускаю файл .bat
- пакетный файл
6
Вы хотите написать:
если существует C:\autoexec.bat ECHO Папка C:\autoexec.bat существует ПАУЗА
Обратите внимание, что оболочка после команды if ожидает выполнения команды. Если после условия de нет команды, пакет следует прервать:
«Синтаксис команды неверен».
Редакт. Мистер Хелпи получил это первым.
Обратите внимание, если вы хотите, чтобы несколько строк использовали блок
если существует C:\autoexec.bat ( Папка ECHO C:\autoexec.bat существует REM другие команды... ) ПАУЗА
3
Ответ в команде.