从 Cmd 提示符 - 如何定时退出程序?

从 Cmd 提示符 - 如何定时退出程序?

我想找到一种方法来使用命令提示符在 60 秒内关闭程序。类似于计算机定时关机 (shutdown /s /t ) 和 taskill。

有什么想法吗?这可能吗?

答案1

我怎样才能在 60 秒内关闭一个程序?

您可以使用pingtimeout来产生时间延迟。

  • timeout在 Windows XP 中不可用。
  • timeout给你一个倒计时。

ping解决方案

要在 60 秒后终止,notepad请使用以下命令:

ping 127.0.0.1 -n 61 > nul && taskkill /im notepad.exe

笔记:

  • 您需要 ping 61 次,因为每个 s 之间有 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 命令也会产生延迟,每次连续 ping 之间会有 1 秒的延迟。在测试中,PING 消耗的处理器时间比 Sleep.exe 或 Timeout.exe 少,这允许其他进程在后台运行。只能使用 Ctrl-C 中断 PING 命令。来源:Clay Calvert (usenet 2001.)

例如延迟 40 秒:

PING -n 41 127.0.0.1>nul

来源暂停


timeout解决方案

要在 60 秒后终止,notepad请使用以下命令:

 timeout /t 60 && taskkill /im notepad.exe

笔记:

  • timeout在 Windows XP 上不可用。
  • timeout执行得不好。如果您执行“超时 1”,它将等到“下一秒”,这可能发生在 0.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

进一步阅读

答案2

尝试使用任务计划程序

  1. 配置事件日志,以便在启动所需程序时引发事件。
  2. 配置计划任务,在记录 #1 中的特定事件时运行。在计划任务中,可以设置延迟(在您的情况下为 60 秒)并且可以启动任何命令/脚本。

答案3

试试我的例子:

choice /t 5 /d a /c ab /n >nul & taskkill /im URprocess.exe

解释:“choice”等待5秒后退出,然后taskkill关闭“URprocess”

答案4

我使用 Windows 10 附带的 scriptrunner.exe。我不得不搜索我的,但它不在路径中。您可以在以下位置找到文档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 包含所有需要转换的文件及其路径。我使用 calibre 的 ebook-convert.exe 进行转换。参数 -timeout=60 是执行停止的时间(以秒为单位)(此处为 60),如果转换提前完成,则执行下一行。

一切运行良好。

相关内容