【发布时间】:2017-11-02 09:11:08
【问题描述】:
我正在尝试制作一个批处理文件,如果它停止响应,它会自动重新启动我的应用程序。
但是我的程序有问题。成功杀死无响应的任务后,它无法再次启动它。问题可能出在哪里?
我对批处理文件比较缺乏经验,所以谢谢你的帮助。
@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 文件的文件夹并将批处理文件移动到启动文件夹。
【问题讨论】:
-
请使用
search工具在SO 上查找关于delayed expansion的条目。问题是%errorlevel%没有特殊状态,也不能免除解析规则。您可能可以在代码中使用if [not] errorlevel n,如果动态设置的errorlevel[not]n** 或大于**n,则将执行true代码
标签: windows batch-file cmd