我正在批处理文件内的标签中执行以下命令:
tasklist.exe /FI "USERNAME eq %USERDOMAIN%\%USERNAME%" /FI "IMAGENAME eq %1" /FI "PID eq %2" 2>nul && echo errorl:%errorlevel%
%1是进程正在运行,%2是其PID。
即使进程及其PID匹配或不匹配,我也会在o/p中收到“errorl:1”。
我不确定这是怎么回事。任何的想法?
最佳答案
我认为您完全不能使用错误级别,
因为任务列表始终返回0,即使找不到pid。
我想,您必须解析tasklist的输出。
要获取命令的输出,FOR /F
是一个不错的选择。
为了避免在FOR /F
中引用时出现问题,我首先构建了cmd
变量,该变量通过延迟扩展进行扩展,以避免特殊字符的任何副作用。
@echo off
setlocal enableDelayedExpansion
set "cmd=tasklist.exe /FI "USERNAME eq %USERDOMAIN%\%USERNAME%" /FI "IMAGENAME eq %1" /FI "PID eq %2""
for /F "delims=*" %%p in ('!cmd! ^| findstr "%2" ') do (
echo found %%p
)
关于file - 批处理文件中任务列表的退出状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4969595/