0

所以我需要编写一个批处理脚本来启动可执行文件并在可执行文件完成后立即退出脚本(所以没有 ip ping 等待脚本),但如果可执行文件仍在运行,则会在 30 分钟后自动终止 exe 并退出脚本(挂起,没有响应等)

这是我到目前为止所拥有的。find 语句正确输出匹配的进程数,但我的问题是 ERRORLEVEL 始终返回 0,无论是否有匹配的可执行文件正在运行。

我对批处理脚本相当陌生,所以很可能我忽略了一些非常简单的事情。

@echo off
start calc.exe

REM loop 600 times, each loop being 3 seconds (30 minutes total)
FOR /L %%A IN (1,1,600) DO (

   REM find the running executable
   tasklist | find /I /C "calc.exe" > nul
   echo %ERRORLEVEL%

   Rem exit the script if no executable is found (i.e it has run successfully)
   if %ERRORLEVEL% eq 1 EXIT 

   Rem pause for 3 seconds
   ping 1.1.1.1 -n 1 -w 3000 > nul
)

REM kill executable if we haven't exited yet
taskkill /f /im calc.exe

提前致谢!

4

2 回答 2

4

在代码块中,您始终需要delayed expansion

@echo OFF &SETLOCAL ENABLEDELAYEDEXPANSION 
start calc.exe

REM loop 600 times, each loop being 3 seconds (30 minutes total)
FOR /L %%A IN (1,1,600) DO (

   REM find the running executable
   tasklist | find /I /C "calc.exe" > nul
   echo !ERRORLEVEL!

   Rem exit the script if no executable is found (i.e it has run successfully)
   if !ERRORLEVEL! eq 1 EXIT 

   Rem pause for 3 seconds
   ping 1.1.1.1 -n 1 -w 3000 > nul
)

REM kill executable if we haven't exited yet
taskkill /f /im calc.exe
于 2013-06-24T21:22:51.333 回答
2

tasklist将您的批处理脚本调用更改为find

tasklist /FI "IMAGENAME eq calc.exe" | find /I "calc.exe" > nul

如果我在有和没有Calculator运行副本的情况下进行测试(命令窗口中的 Win7 64),这将正常工作。

于 2013-06-24T20:18:18.593 回答