gpt4 book ai didi

windows - 通过CMD自动重启无响应程序

转载 作者:可可西里 更新时间:2023-11-01 10:42:13 25 4
gpt4 key购买 nike

我正在尝试制作一个批处理文件,如果它停止响应,它会自动重新启动我的应用程序。

但是我的程序有问题。成功杀死无响应任务后,它无法再次启动它。问题出在哪里?

我对批处理文件比较缺乏经验,所以感谢您的帮助。

@echo off
:start
tasklist /fi "STATUS eq NOT RESPONDING" > D:\tasklist.txt
find /C "infinite_loop.exe" D:\tasklist.txt
if %errorlevel% equ 0 (
timeout 10
tasklist /fi "STATUS eq NOT RESPONDING" > D:\tasklist.txt
find /C "infinite_loop.exe" D:\tasklist.txt
if %errorlevel% equ 0 (
taskkill /im "infinite_loop.exe" /f
timeout 10
tasklist > D:\tasklist.txt
find /C "infinite_loop.exe" D:\tasklist.txt
if %errorlevel% equ 1 (
echo %errorlevel%
)
)
)
timeout 5
goto start

我正在使用无限循环程序进行测试。批处理文件和程序存储在同一个文件中,当我完成时,我将添加重定向到带有 .exe 文件的文件夹,并将批处理文件移动到启动文件夹。

最佳答案

您的代码有两个问题。正如 Magoo 指出的那样,您的错误级别是嵌套的,这将阻止解析它们是实际值。其次,当您关闭该程序时,您不会再次启动它。这是解决这两个问题的方法:

@echo off

:start
timeout 5

tasklist /fi "STATUS eq NOT RESPONDING" > D:\tasklist.txt
find /C "infinite_loop.exe" D:\tasklist.txt
if "%errorlevel%" neq "0" goto :start
:: else
timeout 10

tasklist /fi "STATUS eq NOT RESPONDING" > D:\tasklist.txt
find /C "infinite_loop.exe" D:\tasklist.txt
if "%errorlevel%" neq "0" goto :start
:: else
taskkill /im "infinite_loop.exe" /f
timeout 10

tasklist > D:\tasklist.txt
find /C "infinite_loop.exe" D:\tasklist.txt
if "%errorlevel%" neq "1" goto :start
:: else
Echo %errorlevel%
start "" "infinite_loop.exe"

goto :start

不是检查 %errorlevel% 是否是您想要的值和进度,您可以检查它是否不是您想要的值,在这种情况下重新启动循环。

关于windows - 通过CMD自动重启无响应程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47071390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com