
Я хочу найти способ использовать командную строку, чтобы закрыть программу, скажем, за 60 секунд. Подобно выключению компьютера по времени (shutdown /s /t) и taskill.
Есть идеи? Это возможно?
решение1
Как закрыть программу, скажем, через... 60 секунд?
Вы можете использовать ping
или timeout
для создания задержки по времени.
timeout
недоступно в Windows XP.timeout
дает вам обратный отсчет.
ping
решение
Чтобы убить notepad
через 60 секунд, используйте следующую команду:
ping 127.0.0.1 -n 61 > nul && taskkill /im notepad.exe
Примечание:
- Вам нужно 61 пинг, так как между ними есть задержка в 1
ping
секунду.
Пример:
F:\test>time /t && ping 127.0.0.1 -n 61 > nul && taskkill /im notepad.exe && time /t
17:56
SUCCESS: Sent termination signal to the process "notepad.exe" with PID 8084.
17:57
Задержка также может быть вызвана командой PING с адресом обратной связи, между каждым последующим пингом есть задержка в 1 секунду. В тестах PING потребляет меньше процессорного времени, чем Sleep.exe или Timeout.exe, это позволяет другим процессам работать в фоновом режиме. Команду PING можно прервать только с помощью Ctrl-C. Источник: Clay Calvert (usenet 2001.)
например, для задержки в 40 секунд:
ПИНГ -n 41 127.0.0.1>ноль
Источниктайм-аут
timeout
решение
Чтобы убить notepad
через 60 секунд, используйте следующую команду:
timeout /t 60 && taskkill /im notepad.exe
Примечания:
timeout
недоступно в Windows XP.timeout
плохо реализовано. Если вы сделаете "тайм-аут 1", он будет ждать до "следующей секунды", которая может произойти через .1 секунды. Попробуйте сделать "тайм-аут 1" несколько раз и посмотрите разницу в задержке. Для 5 секунд или больше это может быть не так уж важно, но для задержки в 1 секунду это работает плохо.
Пример:
F:\test>time /t && timeout /t 60 && taskkill /im notepad.exe && time /t
18:07
Waiting for 0 seconds, press a key to continue ...
SUCCESS: Sent termination signal to the process "notepad.exe" with PID 5412.
18:08
Дальнейшее чтение
- Индекс AZ командной строки Windows CMD- Отличный справочник по всем вопросам, связанным с командной строкой Windows.
- тайм-аут- Задержка выполнения на несколько секунд или минут для использования в пакетном файле.
- пинг- Проверьте сетевое соединение — в случае успеха ping возвращает IP-адрес.
- Как заснуть на 5 секунд в командной строке Windows? (или DOS)
решение2
Попробуйте использоватьДиспетчер задач.
- Настройте ведение журнала событий таким образом, чтобы событие возникало при запуске нужной программы.
- Настройте запланированную задачу для запуска при регистрации определенного события из #1. В запланированной задаче можно установить задержку (в вашем случае 60 секунд) и запустить любые команды/скрипты.
решение3
Попробуйте мой пример:
choice /t 5 /d a /c ab /n >nul & taskkill /im URprocess.exe
Объяснение: «choice» ждет 5 секунд и завершает работу, затем taskkill закрывает «URprocess»
решение4
Я использую scriptrunner.exe, поставляемый с Windows 10. Мне пришлось искать свой, его не было в пути. Вы можете найти документацию наhttps://ss64.com/nt/scriptrunner.html
Я часто конвертирую кучу электронных книг в epub, но конвертация часто останавливается на полпути. Поэтому я сделал партию со следующим содержанием.
@echo off
for /F "delims=" %%a in (files.txt) do (
if not exist "%%a.epub" ScriptRunner.exe -appvscript "c:\Program Files (x86)\calibre2\ebook-convert.exe" "%%a" "%%a.epub" -appvscriptrunnerparameters -timeout=60
if exist "%%a.epub" del "%%a"
)
Files.txt содержит все файлы с путями, которые необходимо преобразовать. Я использую ebook-convert.exe из calibre для выполнения преобразования. Аргумент -timeout=60 — это время в секундах (здесь 60), после которого выполнение останавливается, если преобразование будет готово раньше, выполняется следующая строка.
Все это работает хорошо.