Как заснуть на пять секунд в командном файле / cmd [дубликат]

Инструмент Windows Snipping может захватывать экран, но иногда я хочу сделать снимок экрана через пять секунд, например, для получения изображения, отображаемого веб-камерой. (Запустите сценарий и улыбнитесь в камеру, например.)

Как мне заснуть на 5 секунд в пакетном файле?


Один взломать (неправильно) использовать команду ping:

  ping 127.0.0.1 -n 6> nul  

Пояснение:

  • ping — системная утилита, отправляющая запросы ping. ping доступен во всех версиях Windows.
  • 127.0.0.1 — это IP-адрес localhost. Гарантируется, что этот IP-адрес всегда будет разрешаться, быть доступным и немедленно отвечать на эхо-запросы.
  • -n 6 указывает, что должно быть 6 эхо-запросов. Между каждым эхо-запросом существует задержка в 1 с, поэтому для задержки в 5 с вам нужно отправить 6 эхо-запросов.
  • > nul подавить вывод ping , перенаправив его на nul.

Я очень удивлен, что никто не упомянул:

  C: > timeout 5  

NB Однако обратите внимание (спасибо, Дэн!), что таймаут 5 означает:

Спать где угодно от 4 до 5 секунд

Это можно проверить эмпирически, поместив следующее в пакетный файл, запустив его несколько раз и вычислив разницу во времени между первым и вторым эхо s:

  @echo offecho% time% timeout 5> NULecho% time%  


Я очень удивлен, что никто не упомянул:

  C: > таймаут 5 код> 

NB Однако обратите внимание (спасибо, Дэн!), что таймаут 5 означает:

Спать где угодно от 4 до 5 секунд

Это можно проверить эмпирически, поместив следующее в пакетный файл, запустив его несколько раз и вычислив разницу во времени между первым и вторым эхо s:

  @echo offecho% time% timeout 5> NULecho% time%  

Попробуйте команду Choice. Он существует с MSDOS 6.0 и должен помочь.

Используйте параметр/T, чтобы указать тайм-аут в секундах, и параметр/D, чтобы указать выбор по умолчанию и игнорировать выбранный вариант.

Единственное, что может проблема заключается в том, что пользователь вводит один из выбранных символов до истечения периода ожидания. Частичный обходной путь состоит в том, чтобы запутать ситуацию — используйте аргумент/N, чтобы скрыть список допустимых вариантов и иметь только 1 символ в наборе вариантов, чтобы было меньше вероятности того, что пользователь введет правильный выбор перед таймаут истекает.

Ниже приведен текст справки по Windows Vista. Я думаю, что то же самое в XP, но посмотрите текст справки на компьютере XP, чтобы убедиться.

  C: > CHOICE/? CHOICE [/C choices] [ /N] [/CS] [/T timeout/D choice] [/M text] Описание: этот инструмент позволяет пользователям выбрать один элемент из списка вариантов и возвращает индекс выбранного варианта. Список параметров:/C choices  Определяет список вариантов для создания.  Список по умолчанию - «YN». /N Скрывает список вариантов в подсказке.  Сообщение перед подсказкой отображается, и варианты все еще доступны. /CS Позволяет выбирать варианты с учетом регистра.  По умолчанию утилита нечувствительна к регистру. /T тайм-аут Количество секунд для паузы перед выбором по умолчанию.  Допустимые значения: от 0 до 9999. Если указан 0, паузы не будет и будет выбран вариант по умолчанию. /D выбор Задает выбор по умолчанию через nnnn секунд.  Символ должен быть в наборе вариантов, заданном параметром/C, а также должен указывать nnnn с/T. /M текст Задает сообщение, которое будет отображаться перед подсказкой.  Если не указан, утилита отображает только подсказку. /?  Отображает это справочное сообщение.  ПРИМЕЧАНИЕ. Переменная среды ERRORLEVEL установлена ​​на индекс ключа, который был выбран из набора вариантов.  Первый из перечисленных вариантов возвращает значение 1, второй - значение 2 и так далее.  Если пользователь нажимает клавишу, выбор которой недопустим, инструмент издает предупреждающий звуковой сигнал.  Если инструмент обнаруживает состояние ошибки, он возвращает значение ERRORLEVEL, равное 255. Если пользователь нажимает CTRL + BREAK или CTRL + C, инструмент возвращает значение ERRORLEVEL, равное 0. Когда вы используете параметры ERRORLEVEL в пакетной программе, перечислите их в порядке убывания.  порядок. Примеры: ВЫБОР/?  CHOICE/C YNC/M «Нажмите Y для Да, N для Нет или C для отмены».  CHOICE/T 10/C ync/CS/D y CHOICE/C ab/M «Выберите a для варианта 1 и b для варианта 2».  CHOICE/C ab/N/M «Выберите a для варианта 1 и b для варианта 2»  


Попробуйте команду «Выбор» . Он существует с MSDOS 6.0 и должен помочь.

Используйте параметр/T, чтобы указать тайм-аут в секундах, и параметр/D, чтобы указать выбор по умолчанию и игнорировать выбранный вариант.

Единственное, что может проблема заключается в том, что пользователь вводит один из выбранных символов до истечения периода ожидания. Частичный обходной путь состоит в том, чтобы запутать ситуацию — используйте аргумент/N, чтобы скрыть список допустимых вариантов и иметь только 1 символ в наборе вариантов, чтобы было меньше вероятности того, что пользователь введет правильный выбор перед таймаут истекает.

Ниже приводится текст справки по Windows Vista. Я думаю, что то же самое и в XP, но посмотрите текст справки на компьютере XP, чтобы убедиться.

  C: > CHOICE/? CHOICE [/C choices] [/N] [/CS] [/T timeout/D choice] [/M text] Описание:  Этот инструмент позволяет пользователям выбрать один элемент из списка вариантов и возвращает индекс выбранного варианта. Список параметров:/C choices Определяет список вариантов, который будет создан.  Список по умолчанию - «YN». /N Скрывает список вариантов в подсказке.  Сообщение перед подсказкой отображается, и варианты все еще доступны. /CS Позволяет выбирать варианты с учетом регистра.  По умолчанию утилита нечувствительна к регистру. /T тайм-аут Количество секунд для паузы перед выбором по умолчанию.  Допустимые значения: от 0 до 9999. Если указан 0, паузы не будет и будет выбран вариант по умолчанию. /D выбор Задает выбор по умолчанию через nnnn секунд.  Символ должен быть в наборе вариантов, заданном параметром/C, а также должен указывать nnnn с/T. /M текст Задает сообщение, которое будет отображаться перед подсказкой.  Если не указан, утилита отображает только подсказку. /?  Отображает это справочное сообщение.  ПРИМЕЧАНИЕ. Переменная среды ERRORLEVEL установлена ​​на индекс ключа, который был выбран из набора вариантов.  Первый из перечисленных вариантов возвращает значение 1, второй - значение 2 и так далее.  Если пользователь нажимает клавишу, выбор которой недопустим, инструмент издает предупреждающий звуковой сигнал.  Если инструмент обнаруживает состояние ошибки, он возвращает значение ERRORLEVEL, равное 255. Если пользователь нажимает CTRL + BREAK или CTRL + C, инструмент возвращает значение ERRORLEVEL, равное 0. Когда вы используете параметры ERRORLEVEL в пакетной программе, перечислите их в порядке убывания.  порядок. Примеры: ВЫБОР/?  CHOICE/C YNC/M «Нажмите Y для Да, N для Нет или C для отмены».  CHOICE/T 10/C ync/CS/D y CHOICE/C ab/M «Выберите a для варианта 1 и b для варианта 2».  CHOICE/C ab/N/M «Выберите a для варианта 1 и b для варианта 2»  

Следующий прием позволяет вам спать на 5 секунд

  ping -n 6 127.0.0.1> nul  

Поскольку ping ждет секунду между пингами, вы должны указать на один больше, чем вам нужно.


Следующие hack, позвольте вам спать на 5 секунд

  ping -n 6 127.0.0.1> nul  

Так как ping ждет секунду между пингов, вы должны указать на один больше, чем вам нужно.


Если в вашей системе установлен PowerShell , вы можете просто выполнить эту команду:

  powershell -command "Start-Sleep -s 5"  

Изменить: люди подняли проблему, из-за которой время, необходимое Powershell для запуска, значительно по сравнению с тем, как долго вы пытаетесь ждать. Если важна точность времени ожидания (т. Е. Одна или две дополнительные задержки недопустимы), вы можете использовать этот подход:

  powershell -command "$ sleepUntil = [  DateTime] :: Parse ('% date%% time%'). AddSeconds (5);  $ sleepDuration = $ sleepUntil.Subtract ((дата получения)). TotalMilliseconds;  start-sleep -m $ sleepDuration " 

Для этого требуется время, когда была введена команда Windows, и сценарий PowerShell отключается до 5 секунд после этого времени. Таким образом, пока Powershell занимает время для начала меньше, чем продолжительность сна, этот подход будет работать (на моем компьютере это около 600 мс).


Если в вашей системе есть PowerShell, вы можете просто выполнить эту команду:

  powershell -command "Start-Sleep -s 5"  

Изменить: люди подняли проблему, из-за которой время, необходимое Powershell для запуска, значительно по сравнению с тем, как долго вы пытаетесь ждать. Если важна точность времени ожидания (т.е. одна или две дополнительные задержки недопустимы), вы можете использовать этот подход:

  powershell -command "$ sleepUntil = [DateTime] :: Parse ('% date  %% time% '). AddSeconds (5);  $ sleepDuration = $ sleepUntil.Subtract ((дата получения)). TotalMilliseconds;  start-sleep -m $ sleepDuration " 

Для этого требуется время, когда была введена команда Windows, и сценарий PowerShell отключается до 5 секунд после этого времени. Таким образом, пока Powershell занимает время для запуска меньше, чем продолжительность сна, этот подход будет работать (на моем компьютере это около 600 мс).


Вы можете сделать это с помощью timeout :

Это будет видно: timeout 5

Это не будет видно таймаут 5> nul


Вы можете сделать это с помощью тайм-аут :

Это будет видно: тайм-аут 5

Это не будет видно тайм-аут 5> nul


Разве мы не можем сделать waitfor/T 180 ?

waitfor/T 180 pause приведет к ошибке «ОШИБКА: время ожидания ожидания паузы истекло».

waitfor/T 180 paus e> nul сметет эту «ошибку» под коврик

Команда waitfor должна присутствовать в ОС Windows после Win95

Раньше я загружал исполняемый файл с именем sleep , который будет работать в командной строке после того, как вы поместите его в свой путь.

Например, : выключение сна -r -f/m \ yourmachine , хотя для выключения теперь встроена опция -t


Разве мы не можем сделать waitfor/T 180 ?

waitfor/T 180 pause приведет к сообщению «ОШИБКА: истекло время ожидания паузы».. «

waitfor/T 180 pause> nul сметет эту» ошибку «под ковер

Команда waitfor должна присутствовать в ОС Windows после Win95

Раньше я загружал исполняемый файл с именем sleep , который будет работать в командной строке после того, как вы поместите его на свой путь.

Например: выключение сна -r -f/m \ yourmachine , хотя теперь выключение имеет параметр -t, встроенный в


Тайм-аут/t 1> nul

Это похоже на паузу в 1 секунду, вы можете довести известь до почти 100000 (99,999) секунд. Если вы подключены к Интернету, лучшим решением будет:

ping 1.1.1.1. -N 1 -w 1000> nul

Когда вы проверяете связь, вы считаете в миллисекундах, поэтому одна секунда будет равна 1000 миллисекунд. Но команда ping немного ненадежна, на автономных машинах это не работает. Проблема в том, что машина сбивается с толку, потому что находится в автономном режиме и хотела бы пропинговать website/server/host/ip , но не может. Так что я бы рекомендовал тайм-аут. Удачи!


Timeout/t 1> nul

Похоже на паузу в 1 секунду, вы можете довести известкование почти до 100000 (99.999) секунд. Если вы подключены к Интернету, лучшим решением будет:

ping 1.1.1.1. -n 1 -w 1000> nul

Когда вы проверяете связь, вы рассчитываете в миллисекундах, поэтому одна секунда будет 1000 миллисекунд. Но команда ping немного ненадежна, она не работает так же на автономных машинах. Проблема в том, что машина сбивается с толку, потому что она оффлайн, и она хотела бы пинговать веб-сайт/сервер/хост /ip , но не может. Поэтому я бы рекомендовал тайм-аут. Удачи!


SLEEP 5 был включен в некоторые из наборов ресурсов Windows.

TIMEOUT 5 был включен в некоторые из ресурсов Windows Наборы, но теперь это стандартная команда в Windows 7 и 8 (не уверен насчет Vista).

PING 1.1.1.1 -n 1 -w 5000> NUL Для любой версии MS-DOS или Windows с клиентом TCP/IP PING можно использовать для задержки выполнения на несколько секунд.

NETSH badcommand (Windows Только XP/Server 2003) или CHOICE

эта ссылка поможет вам больше.


СОН 5 был включен в некоторые из комплектов ресурсов Windows.

TIMEOUT 5 был включен в некоторые комплекты ресурсов Windows, но теперь является стандартной командой в Windows 7 и 8 (не уверен насчет Vista).

PING 1.1.1.1 -n 1 -w 5000> NUL Для любой версии MS-DOS или Windows с TCP/ IP-клиент, PING можно использовать для задержки выполнения на несколько секунд.

Плохая команда NETSH (только для Windows XP/Server 2003) или CHOICE

по этой ссылке поможет вам больше.


Два ответа:

Во-первых, чтобы отложить в пакетном файле, просто без всех тупых методов, которые предлагают люди:

  timeout/t  [/nobreak]  

http://technet.microsoft.com/en-us/library/cc754891.aspx

Во-вторых, стоит упомянуть, что, хотя он может не делать именно то, что вы хотите, используя встроенную Windows ножничный инструмент, вы можете нажать на него, не используя мышь. Запустите инструмент для обрезки, выйдите из текущего фрагмента, но оставьте инструмент включенным, и нажмите Control + Print Screen, когда вы хотите, чтобы фрагмент произошел. Это не должно мешать тому, что вы пытаетесь обрезать.


Два ответа:

Во-первых , чтобы отложить пакетный файл, просто без всех тупых методов, которые предлагают люди:

  timeout/t  [/nobreak]  

http://technet.microsoft.com/en-us/library/cc754891.aspx

Во-вторых, стоит упомянуть, что, хотя он может не делать именно то, что вы хотите, используя встроенный в Windows инструмент для обрезки, вы можете запустить его, не используя мышь. Запустите инструмент для обрезки, выйдите из текущего фрагмента, но оставьте инструмент включенным и нажмите Control + Print Screen, когда вы хотите, чтобы фрагмент произошел. Это не должно мешать тому, что вы пытаетесь обрезать.


Я пытался сделать это изнутри задачи msbuild, а выбор и тайм-аут не работали из-за перенаправления ввода-вывода.

В итоге я использовал sleep.exe из http://sourceforge.net/projects/unxutils, что приятно, потому что не требует установки и крошечный.


Пробуем с choice :

      

Результаты в:

  TestCmd: choice/C YN /DY/t 5EXEC: ошибка: файл либо пуст, либо не содержит допустимых вариантов.  [test.proj] [Y, N]? C:  test.proj (5,9): ошибка MSB3073: команда «choice/C YN/DY/t 5» завершилась с кодом 255.  

Пробуем с timeout :

      

Результаты в:

  TestCmd: timeout/t 5EXEC:  ошибка: перенаправление ввода не поддерживается, процесс завершается немедленно.  [test.proj] C:  test.proj (5,7): ошибка MSB3073: команда «timeout/t 5» завершилась с кодом 1.  

В сторону:

Я на самом деле использую , потому что выполняю dbghost. exe несколько раз параллельно и создает временные файлы/базы данных на основе времени текущей эпохи в секундах — что, конечно же, означает, что если вы запускаете несколько экземпляров, каждый использует одно и то же временное имя. Первоначально я пытался использовать команду MSBuild Extension Pack Thread.Sleep , но кажется, что (обычно) она отлично выполняла задачу сна, но затем запустила во всех потоках одновременно, и, конечно же, dbghost.exe завершится ошибкой с конфликтами. Пока что использование sleep.exe кажется более надежным.


Я пытался сделать это из задачи msbuild, а также выбор и тайм-аут оба не работали из-за перенаправления ввода-вывода.

В итоге я использовал sleep.exe из http://sourceforge.net/projects/unxutils, что приятно, потому что не требует установки и крошечный.


Пробуем с choice :

      

Результаты в:

  TestCmd: choice/C YN /DY/t 5EXEC: ошибка: файл либо пуст, либо не содержит допустимых вариантов.  [test.proj] [Y, N]? C:  test.proj (5,9): ошибка MSB3073: команда «choice/C YN/DY/t 5» завершилась с кодом 255.  

Пробуем с timeout :

      

Результаты в:

  TestCmd: timeout/t 5EXEC:  ошибка: перенаправление ввода не поддерживается, процесс завершается немедленно.  [test.proj] C:  test.proj (5,7): ошибка MSB3073: команда «timeout/t 5» завершилась с кодом 1.  

В сторону:

Я на самом деле использую , потому что я выполняю dbghost.exe несколько раз параллельно и он создает временные файлы/базы данных на основе времени текущей эпохи в секундах — что, конечно же, означает, что если вы запускаете несколько экземпляров, каждый из них использует одно и то же временное имя. Первоначально я пытался использовать команду MSBuild Extension Pack Thread.Sleep , но кажется, что (обычно) она отлично выполняла задачу сна, но затем запустила во всех потоках одновременно, и, конечно же, dbghost.exe завершится ошибкой с конфликтами. Пока что использование sleep.exe кажется более надежным.


Есть!

  SLEEP  

Если вы хотите его в миллисекундном режиме:

  SLEEP -  m   

Это более полезно, чем TIMEOUT , потому что TIMEOUT можно прервать с помощью нажатие клавиши или CTRL + C (для TIMEOUT/t /nobreak ). SLEEP не может быть прерван ничем (кроме кнопки закрытия: p)

Другой — PING . Но для PING требуется подключение к Интернету, потому что вы будете записывать подключение к сайту.


Есть!

  SLEEP  

Если вы хотите его в миллисекундном режиме:

  SLEEP -m   

Это более полезно, чем TIMEOUT , потому что TIMEOUT можно прервать нажатием клавиши или CTRL + C (для TIMEOUT/t /nobreak ). SLEEP не может быть прерван ничем (кроме кнопки закрытия: p)

Другой — PING . Но для PING требуется подключение к Интернету, потому что вы будете записывать подключение к сайту.


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

  BEST> @echo doneBEST  > @set DelayInSeconds = 10BEST> @rem Используйте ping для ожиданияBEST> @ping 192.0.2.0 -n 1 -w% DelayInSeconds% 000> nul  

Завершенное эхо позволяет мне видеть когда сценарий завершится и пинг обеспечивает задержку. Дополнительные знаки @ означают, что я вижу текст «готово» и ожидание происходит без отвлечения меня на их команды.

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

  GOOD> ping 192.0  .2.0 -n 1 -w 3000> nul  

Как и ожидалось, это дало трехсекундную задержку. Одна попытка проверки связи продолжительностью указанные 3 секунды.

  BAD> ping -n 5 192.0.2.0> nul  

Это заняло около 10 секунд (не 5). Мое объяснение состоит в том, что есть 5 попыток пинга, каждая с интервалом примерно в секунду, что составляет 4 секунды. И каждая попытка проверки связи, вероятно, длилась около секунды, что составило в общей сложности 9 секунд.

  BAD> timeout 5BAD> sleep/w2000BAD> waitfor/T 180BAD> choice   

Команды недоступны.

  BAD> ping 192.0.2.0 -n 1 -w 10000> nul :: wait 10000 миллисекунд, т.е. 10 секунд   

Я тоже попробовал описанное выше, прочитав, что комментарии могут быть добавлены к файлам BAT, используя два последовательных двоеточия. Однако программное обеспечение вернулось почти мгновенно. Добавление комментария в отдельной строке до того, как пинг сработал нормально.

  GOOD> :: wait 10000 миллисекунд, т.е. 10 secsGOOD> ping 192.0.2.0 -n 1 -w 10000>  nul  

Чтобы лучше понять, что ping делает на практике, я запустил

  ping 192.0.2.0 -n 5 -w 5000  

Это заняло около 30 секунд, хотя 5 * 5 = 25. Мое объяснение состоит в том, что существует 5 попыток проверки связи, каждая из которых длится 5 секунд, но между попытками проверки связи есть временная задержка примерно в 1 секунду: в конце концов, нет особых причин ожидать другого результата, если вы сразу же повторите попытку, и лучше дать сети немного времени, чтобы оправиться от возникшей проблемы.

Изменить: украдено из другого сообщения, .. RFC 3330 говорит, что IP-адрес 192.0.2.0 не должен появляться в Интернете, поэтому проверьте это адрес предотвращает рассылку спама этими тестами! Я соответствующим образом изменил текст выше!


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

  BEST> @echo doneBEST> @set DelayInSeconds = 10BEST> @rem Используйте  ping to waitBEST> @ping 192.0.2.0 -n 1 -w% DelayInSeconds% 000> nul  

Готовое эхо позволяет мне видеть, когда скрипт завершает завершено, и пинг обеспечивает задержку. Дополнительные знаки @ означают, что я вижу текст «готово» и ожидание происходит без отвлечения меня на их команды.

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

  GOOD> ping 192.0  .2.0 -n 1 -w 3000> nul  

Как и ожидалось, это дало трехсекундную задержку. Одна попытка проверки связи продолжительностью указанные 3 секунды.

  BAD> ping -n 5 192.0.2.0> nul  

Это заняло около 10 секунд (не 5). Мое объяснение состоит в том, что есть 5 попыток пинга, каждая с интервалом примерно в секунду, что составляет 4 секунды. И каждая попытка проверки связи, вероятно, длилась около секунды, что составило в общей сложности 9 секунд.

  BAD> timeout 5BAD> sleep/w2000BAD> waitfor/T 180BAD> choice   

Команды недоступны.

  BAD> ping 192.0.2.0 -n 1 -w 10000> nul :: wait 10000 миллисекунд, т.е. 10 секунд   

Я тоже попробовал описанное выше, прочитав, что комментарии могут быть добавлены к файлам BAT, используя два последовательных двоеточия. Однако программное обеспечение вернулось почти мгновенно. Добавление комментария в отдельной строке до того, как пинг сработал нормально.

  GOOD> :: wait 10000 миллисекунд, т.е. 10 secsGOOD> ping 192.0.2.0 -n 1 -w 10000>  nul  

Чтобы лучше понять, что делает ping на практике, я запустил

  ping 192.0.2.0 -n 5 -w 5000  

Это заняло около 30 секунд, хотя 5 * 5 = 25. Мое объяснение состоит в том, что существует 5 попыток проверки связи, каждая из которых длится 5 секунд, но между попытками проверки связи существует задержка примерно в 1 секунду: в конце концов, нет особых причин ожидать другого результата, если вы сразу же снова выполните проверку связи, и лучше дать сети немного времени, чтобы оправиться от любой проблемы, с которой она столкнулась.

Изменить: украдено из другого сообщения, .. RFC 3330 говорит, что IP-адрес 192.0.2.0 не должен появляться в Интернете, поэтому проверка связи с этим адресом предотвращает рассылку спама этими тестами! Я изменил текст выше соответственно!


Еще два способа, которые должны работать со всем, начиная с XP и выше:

с w32tm :

  w32tm/stripchart/computer: localhost/period: 5/dataonly/samples: 2 1> nul  

с typeperf :

  typeperf " System  Processor Queue Length" -si 5  -sc 1> nul  

с mshta (не требует настройки сети):

  start ""/w/b/min mshta "javascript: setTimeout (function () {close ();}, 5000);"  


Еще два способа, которые должны работать со всем, начиная с XP и выше:

с w32tm :

  w32tm/stripchart/computer: localhost/period: 5/dataonly/samples: 2 1> nul  

с typeperf :

  typeperf " System  Processor Queue Length" -si 5 -sc 1> nul  

с mshta (не требует настройки сети):

  start ""/w/b/min mshta "javascript: setTimeout (function () {close ();},  5000); " 

Я сделал это. Он работает и показывает оставшееся время в секундах. Если вы хотите использовать его, добавьте в пакетный файл:

  call wait 10  

Он работал, когда я его тестировал .

Листинг wait.bat (он должен находиться в рабочем каталоге или в windir/system32/):

  @echo offset SW = 00set SW2 = 00set/a Sec =% 1-1set il = 00 @ echo Wait% 1 secondfor/f "tokens = 1,2,3,4  delims = :, "%% A in ("% TIME% ") установить/a HH = %% A, MM = 1 %% B-100, SS = 1 %% C-100, CC = 1 %% D  -100, TBASE = ((HH * 60 + MM) * 60 + SS) * 100 + CC, SW = CC set/a TFIN =% TBASE% +% 100: ESPERARfor/f "токенов = 1,2,3,  4 разделителя = :, "%% A в ("% TIME% ") установить/a HH = %% A, MM = 1 %% B-100, SS = 1 %% C-100, CC = 1 %%  D-100, TACTUAL = ((HH * 60 + MM) * 60 + SS) * 100 + CC, SW2 = CCif% SW2% neq% SW% goto notypeif% il% == 0 (echo Left% Sec% second &  set/a Sec = sec-1 & set/a il = il + 1) goto no0: notypeset/a il = 0: no0if% TACTUAL% lss% TBASE% set/a TACTUAL =% TBASE% +% TACTUAL% if%  TACTUAL% lss% TFIN% goto ESPERAR  

v>

Я сделал это. Он работает и показывает оставшееся время в секундах. Если вы хотите использовать его, добавьте в пакетный файл:

  call wait 10  

Он работал, когда я его тестировал .

Листинг ожидания. bat (он должен находиться в рабочем каталоге или windir/system32/):

  @echo offset SW = 00set SW2  = 00set/a Sec =% 1-1set il = 00 @ echo Wait% 1 secondfor/f "tokens = 1,2,3,4 delims = :," %% A in ("% TIME%") do set/ a HH = %% A, MM = 1 %% B-100, SS = 1 %% C-100, CC = 1 %% D-100, TBASE = ((HH * 60 + MM) * 60 + SS) *  100 + CC, SW = CC set/a TFIN =% TBASE% +% 100: ESPERARfor/f "tokens = 1,2,3,4 delims = :," %% A in ("% TIME%") установить /a HH = %% A, MM = 1 %% B-100, SS = 1 %% C-100, CC = 1 %% D-100, TACTUAL = ((HH * 60 + MM) * 60 + SS)  * 100 + CC, SW2 = CCif% SW2% neq% SW% goto notypeif% il% == 0 (echo Left% Sec% second & set/a Sec = sec-1 & set/a il = il + 1) goto  no0: notypeset/a il = 0: no0if% TACTUAL% lss% TBASE% set/a TACTUAL =% TBASE% +% TACTUAL% if% TACTUAL% lss% TFIN% goto ESPERAR  

Улучшение кода, предложенного пользователем Aacini, имеет разрешение сотых долей секунды и не дает сбоя, когда время достигает 23 : 59: 59,99:

  for/f "tokens = 1,2,3,4 delims = :," %% A in ("% TIME%")  do set/a HH = %% A, MM = 1 %% B-100, SS = 1 %% C-100, CC = 1 %% D-100, TBASE = ((HH * 60 + MM) * 60 +  SS) * 100 + CC :: Пример задержки 1 seg.set/a TFIN =% TBASE% + 100: ESPERARfor/f "tokens = 1,2,3,4 delims = :," %% A in ("% TIME  % ") установить/a HH = %% A, MM = 1 %% B-100, SS = 1 %% C-100, CC = 1 %% D-100, TACTUAL = ((HH * 60 + MM)  * 60 + SS) * 100 + CCif% TACTUAL% lss% TBASE% set/a TACTUAL =% TBASE% +% TACTUAL% if% TACTUAL% lss% TFIN% goto ESPERAR  


Усовершенствование кода, предложенного пользователем Aacini, имеет разрешение сотых долей секунды и не дает сбоев, когда время достигает 23: 59: 59,99:

  for/f "tokens = 1,2,3,4 delims = :," %% A in ("% TIME%") установить/a HH = %% A  , MM = 1 %% B-100, SS = 1 %% C-100, CC = 1 %% D-100, TBASE = ((HH * 60 + MM) * 60 + SS) * 100 + CC :: Пример  delay 1 seg.set/a TFIN =% TBASE% + 100: ESPERARfor/f "tokens = 1,2,3,4 delims = :," %% A in ("% TIME%") do set/a HH =  %% A, MM = 1 %% B-100, SS = 1 %% C-100, CC = 1 %% D-100, TACTUAL = ((ЧЧ * 60 + MM) * 60 + SS) * 10  0 + CCif% TACTUAL% lss% TBASE% set/a TACTUAL =% TBASE% +% TACTUAL% if% TACTUAL% lss% TFIN% goto ESPERAR  

Вы можете использовать VBScript, например, файл myscript.vbs :

  set wsobject = wscript.createobject ("wscript.shell") do while 1 = 1 wsobject.run "SnippingTool.exe", 0, TRUE wscript.sleep 3000loop  

Пакетный файл :

  cscript myscript.vbs% 1  


Вы можете использовать VBScript, например, файл myscript.vbs :

  set wsobject = wscript.createobject ("wscript  .shell ") do while 1 = 1 wsobject.run" SnippingTool.exe ", 0, TRUE wscript.sleep 3000loop  

Пакетный файл:

   cscript myscript. vbs% 1  

Я использую следующий метод, полностью основанный на возможностях Windows XP для выполнения задержка в пакетном файле:

Файл DELAY.BAT

  @ECHO OFFREM DELAY secondsREM GET ENDING SECONDFOR/F "TOKENS = 1-3 DELIMS  знак равно  %% A IN ("% TIME%") DO SET/AH = %% A, M = 1 %% B %% 100, S = 1 %% C %% 100, ENDING = (H * 60 + M) *  60 + S +% 1ДОЖДИТЕ ТАКУЮ СЕКУНДУ: WAITFOR/F "TOKENS = 1-3 DELIMS = :."  %% A IN ("% TIME%") DO SET/AH = %% A, M = 1 %% B %% 100, S = 1 %% C %% 100, CURRENT = (H * 60 + M) *  60 + SIF% CURRENT% LSS% ENDING% GOTO WAIT  

Вы также можете вставить день в расчет, чтобы этот метод также работал, когда интервал задержки превышает полночь.


Я использую следующий метод, полностью основанный на возможностях Windows XP для задержки в пакетном файле:

Файл DELAY.BAT

  @ECHO OFFREM DELAY secondsREM GET ENDING SECONDFOR/F "TOKENS = 1-3 DELIMS = :."  %% A IN ("% TIME%") DO SET/AH = %% A, M = 1 %% B %% 100, S = 1 %% C %% 100, ENDING = (H * 60 + M) *  60 + S +% 1ДОЖДИТЕ ТАКУЮ СЕКУНДУ: WAITFOR/F "TOKENS = 1-3 DELIMS = :."  %% A IN ("% TIME%") DO SET/AH = %% A, M = 1 %% B %% 100, S = 1 %% C %% 100, CURRENT = (H * 60 + M) *  60 + SIF% CURRENT% LSS% ENDING% GOTO WAIT  

Вы также можете вставить день в расчет, чтобы этот метод также работал, когда интервал задержки превышает полночь.


Самый простой способ, которым я это сделал:

Загрузите Sleep.exe по адресу http://www.sleepcmd.com/. Файл .exe должен находиться в той же папке, что и написанная вами программа!


Самый простой способ. сделал это вот так:

Загрузите Sleep.exe с http://www.sleepcmd.com/. Файл .exe должен находиться в той же папке, что и написанная вами программа!


Это можно сделать с помощью две простые строки в пакетном файле: напишите временный файл .vbs в папке % temp% и вызовите его:

  echo WScript.Sleep (5000)> "% temp%  sleep.vbs" cscript "% temp%  sleep.vbs"  


Это можно сделать двумя простыми строками в пакетном файле: напишите временный файл .vbs в % temp% и назовите ее:

  echo WScript.Sleep (5000)> "% temp%  sleep.vbs" cscript "% temp%   sleep.vbs " 

Если у вас есть подходящая версия Windows и Windows Server 2003 Resource Kit Tools, он включает команду сна для пакетных программ. Подробнее на: http://malektips.com/xp_dos_0002. html


Если у вас есть соответствующая версия Windows и Windows Server 2003 Resource Kit Tools, она включает команду сна для пакетных программ. Подробнее на: http://malektips.com/xp_dos_0002.html


  PING -  n 60 127.0.0.1> nul  

в случае, если ваш сетевой адаптер недоступен.


  PING -n 60 127.0.0.1> nul  

в случае, если ваш сетевой адаптер недоступен.


В Windows xp sp3 вы можете использовать команду сна


В Windows xp sp3 вы можете использовать команду сна


Создайте файл cmd с именем sleep.cmd :

  REM Использование: SLEEP Time_in_MiliSECONDS @ ECHO offping 1.0.0.0 -n 1 -w% 1> nul  

Копировать сон .cmd в c: windows system32

Использование:

  sleep 500  

Sleeps на 0,5 секунды. Аргументы в мс. После копирования в System32 может использоваться везде.

РЕДАКТИРОВАТЬ: вы также должны быть вдали от того, что, если машина не подключена к сети (скажем, портативная машина, которую вы используете в метро), трюк с пингом больше не работает.


Создайте файл cmd с именем sleep.cmd:

  REM Использование: SLEEP Time_in_MiliSECONDS @ ECHO offping 1.0.0.0 -n 1 -w% 1> nul  

Скопируйте sleep.cmd в c: windows system32

Использование:

  sleep 500  

Спит на 0,5 секунды. Аргументы в мс. После копирования в System32 может использоваться везде.

РЕДАКТИРОВАТЬ: вы также должны быть вдали от того, что, если машина не подключена к сети (скажем, портативная машина, которую вы используете в метро), трюк с пингом больше не работает.


Что ж, это работает, если у вас есть выбор или пинг.

  @echo offecho.if "% 1" == "" goto askqif "% 1" == "/?"  goto helpif/i "% 1" == "/h" goto helpif% 1 GTR 0 if% 1 LEQ 9999 if/i "% 2" == "/q" set ans1 =% 1 & goto quietif% 1 GTR 0 if  % 1 LEQ 9999 set ans1 =% 1 & goto breakoutif% 1 LEQ 0 echo% 1 не является допустимым числом и goto help, если не "% 1" == "" echo. & Echo "% 1" - неправильный параметр & goto helpgoto end  : helpecho SLEEP запускается в интерактивном режиме (сам по себе) или с параметрами (sleep #/q) echo, где # находится в секундах, диапазон от 1 до 9999echo Используйте дополнительный параметр/q для подавления стандартного вывода echo или введите/h или/?  для этого файл справки echo.goto end: askqset/p ans1 = Сколько секунд спать?  ^  эхо. if "% ans1%" == "" goto askqif% ans1% GTR 0 if% ans1% LEQ 9999 goto breakoutgoto askq: quietchoice/n/t% ans1%/dn> nulif errorlevel 1 ping 1.1.1.1 -n 1 -w  % ans1% 000> nulgoto end: breakoutchoice/n/t% ans1%/dn> nulif errorlevel 1 ping 1.1.1.1 -n 1 -w% ans1% 000> nulecho Slept% ans1% second ^ (s ^) echo .:  конец  

просто назовите его sleep.cmd или sleep.bat и запустите


Ну это работает, если у вас есть выбор или пинг.

  @echo offecho.if "% 1" == "" goto askqif "% 1" == "/?"  goto helpif/i "% 1" == "/h" goto helpif% 1 GTR 0 if% 1 LEQ 9999 if/i "% 2" == "/q" set ans1 =% 1 & goto quietif% 1 GTR 0 if  % 1 LEQ 9999 set ans1 =% 1 & goto breakoutif% 1 LEQ 0 echo% 1 не является допустимым числом и goto help, если не "% 1" == "" echo. & Echo "% 1" - неправильный параметр & goto helpgoto end  : helpecho SLEEP запускается в интерактивном режиме (сам по себе) или с параметрами (sleep #/q) echo, где # находится в секундах, диапазон от 1 до 9999echo Используйте дополнительный параметр/q для подавления стандартного вывода echo или введите/h или/?  для этого файл справки echo.goto end: askqset/p ans1 = Сколько секунд спать?  ^  echo.if "% ans1%" == "" goto askqif% ans1% GTR 0 if% ans1% LEQ 9999 goto breakoutgoto askq: quietchoice/n/t% ans1%/dn> nulif errorlevel 1  ping 1.1.1.1 -n 1 -w% ans1% 000> nulgoto end: breakoutchoice/n/t% ans1%/dn> nulif errorlevel 1 ping 1.1.1.1 -n 1 -w% ans1% 000> nulecho Slept% ans1%  second ^ (s ^) echo.:end  

просто назовите его sleep.cmd или sleep.bat и запустите


ping ждет около 5 секунд перед тайм-аутом, а не 1 секунду, как было указано выше. То есть, если вы не скажите , чтобы он ждал только 1 секунду перед истечением времени.

ping 1.0.0.1 -n 1 -w 1000

будет пинговать один раз, подождите только 1 секунду (1000 мс) для ответа, затем время ожидания.

Итак, приблизительно 20-секундная задержка будет:

ping 1.0.0.1 -n 20 -w 1000


ping ожидает примерно 5 секунд перед ти ming out, а не 1 секунду, как было указано выше. То есть, если вы не укажете , чтобы он ждал только 1 секунду перед истечением времени.

ping 1.0.0.1 -n 1 -w 1000

будет пинговать один раз, ждать ответа только 1 секунду (1000 мс), затем время ожидания.

Итак, примерно 20-секундная задержка будет:

ping 1.0.0.1 -n 20 -w 1000


Я написал программу powerbasic wait.exe , в которой вы передаете ей миллисекундный параметр в своем командном файле

   wait 3000system ('c:/windows/system32/SnippingTool. exe ')  

код для EXE:

  ФУНКЦИЯ PBMAIN () c $ = Command $ s!  = Val (c $) * 1000 снов!  КОНЕЦ ФУНКЦИИ  


Я написал программу powerbasic wait.exe , в которой вы передаете миллисекунду параметр к нему в вашем пакетном файле

  wait 3000system ('c:/windows/system32/SnippingTool.exe')  

код для EXE:

  FUNCTION PBMAIN () c $ = Command $ s!  = Val (c $) * 1000 снов!  КОНЕЦ ФУНКЦИИ  

В более новых версиях ОС Windows вы можете использовать команду

  sleep/w2000  

в сценарии DOS ( .cmd или .bat ), чтобы подождать 2 секунды (2000 мс — подставьте нужное время в мс). Будьте осторожны при включении аргумента /w — без него весь компьютер переводится в спящий режим! Вы можете использовать -m вместо /m , если хотите, и, при желании, двоеточие (:) между w и числом.


В более новых версиях ОС Windows вы можете использовать команду

  sleep/ w2000  

в сценарии DOS ( .cmd или .bat ) для ожидания 2 с (2000 мс — подставьте нужное время в мс). Будьте осторожны при включении аргумента /w — без него весь компьютер переводится в спящий режим! Вы можете использовать -m вместо /m , если хотите, и, при желании, двоеточие (:) между w и числом.


Это должно сработать: выбор/T 5/N/DY

Замените 5 на время в секундах, которое вы хотите подождать …


Это должно сработать: выбор/T 5/N/DY

Замените 5 временем в секундах, которое вы хотите подождать …

Оцените статью
techsly.ru
Добавить комментарий