gpt4 book ai didi

windows - 用于测试 TASKKILL 错误级别的语法

转载 作者:行者123 更新时间:2023-12-02 17:36:47 32 4
gpt4 key购买 nike

在下面所示的批处理文件的上下文中测试 TASKKILLerrorlevel 的正确语法是什么?

:Launch
start "CloseMe" "C:\Program Files\internet explorer\iexplore.exe" "file://C:\ProgramData\Schneider Electric\Citect SCADA 2016\User\1173051_SM_STP\Files\Stony Mountain Institute Lift Station.html"
TIMEOUT 1 &
:ShiftFocus
wscript "C:\ProgramData\Schneider Electric\Citect SCADA 2016\User\1173051_SM_STP\Files\SendAltTab.vbs"
TASKKILL /IM iexplore.exe /FI "WINDOWTITLE eq CloseMe - Internet Explorer"
if %errorlevel% == 1 GOTO ShiftFocus
:End
exit

我正在尝试让我的批处理文件运行 TASKKILL 然后测试结果。

如果结果是“信息:没有按照指定条件运行的任务。”我需要批处理文件才能再次尝试 TASKKILL

如果结果是“成功:发送终止信号至...”。我需要关闭批处理文件。

为了实现这一点,我使用了我学到的 if 语句、标签和 goto herehere

我怀疑我错误地使用了错误级别,因为无论 TASKKILL 执行什么操作,从我的批处理文件的角度来看,其错误级别都是 0。类似帖子的一些答案正在使用 %errorlevel % 和其他人正在使用 errorlevel。无论我在批处理文件中使用哪个,无论 TASKKILL 的实际结果如何,它都会看到错误级别 0。

最佳答案

taskkill 清除 ErrorLevel当您提供过滤器时/FI这导致不匹配!但是,当您仅筛选图像名称 ( /IM ) 或进程 ID ( /PID ) 时, ErrorLevel变为设置为128如果没有遇到匹配项。

因此我会通过 tasklist 预过滤进程并使用taskkill连同其 /PID过滤器:

:LOOP
rem // Establish a short wait time to not heavily load the processor:
> nul timeout /T 1 /NOBREAK
rem // Prefilter processes and retrieve the PID of the applicable one:
set "PID=" & for /F "tokens=1* delims=:" %%T in ('
tasklist /FI "IMAGENAME eq iexplore.exe" /FI "WINDOWTITLE eq CloseMe - Internet Explorer" /FO LIST
') do if "%%T"=="PID" for /F %%W in ("%%U") do set "PID=%%W"
rem // Loop back in case no PID could be retrieved:
if not defined PID goto :LOOP
rem // Try to kill the task and loop back in case of failure:
taskkill /PID %PID% || goto :LOOP

关于windows - 用于测试 TASKKILL 错误级别的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51295176/

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