batch-file - 批处理脚本查找程序是否没有响应,然后启动另一个应用程序,否则退出批处理作业

标签 batch-file

我想要一个批处理脚本来检查程序是否处于运行或不响应状态。如果处于运行状态,则退出批处理脚本,否则杀死该程序,启动其他应用程序。

我尝试使用以下代码,但即使程序处于运行状态,它也会执行打开的应用程序。请帮我找到解决方案

@echo off
TASKLIST/IM jusched.exe /FI "STATUS eq NOT RESPONDING">nul /T /F  && start "" notepad.exe

最佳答案

您似乎混淆了 TaskKill 和 TaskList 语法。 (在命令提示符处输入 TaskList/?TaskKill/? 以获取使用信息)。此外,我认为 TaskList 输出总是成功的,因此它会可能需要使用如果不成功则注册的东西进行检查,例如Find.exe

这是为您提供的基本分步示例。

@Echo Off
Rem Setting name of target process
Set "TP=jusched.exe"
Rem Setting name of new process
Set "NP=notepad.exe"
Rem Setting TaskList filters to reduce line length
Set "F1=ImageName eq %TP%"
Set "F2=Status eq Not Responding"
Rem Check target process status and exit if no match
TaskList /FI "%F1" /FI "%F2%" /NH|Find /I "%TP%">Nul||Exit/B
Rem Kill unresponsive process and wait a little
TaskKill /IM "%TP%" /T /F>Nul 2>&1&&Timeout 3 /NoBreak>Nul
Rem Open new process
Start "" "%NP%"

关于batch-file - 批处理脚本查找程序是否没有响应,然后启动另一个应用程序,否则退出批处理作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47411195/

相关文章:

windows - 如何将参数传递给批处理文件

powershell - 在 Powershell 中为批处理文件设置变量

java - 设置 JAR 文件的类路径

c++ - 为什么 'system' 不应在 Windows 特定应用程序中使用

javascript - NodeJS 与 Child_Process - 如何转义我的命令

windows - 如何在批处理文件中执行多个 git 命令而不在第一个命令后终止?

Windows 命令行 - 根据 Ping 延迟选择服务器

java - 如何使用批处理文件删除文本文件中的前 n 行(在 Windows 上)

batch-file - 使用 setx 分配空系统变量

windows - 在批处理文件中查找/替换文本时如何处理&符号?