file - 批处理文件中任务列表的退出状态?

标签 file batch-file exit status tasklist

我正在批处理文件内的标签中执行以下命令:

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/

相关文章:

file - 如何将文件从本地机器复制到 Windows 上的 docker 容器

c - 如何读取整数并将其写入文件

android - 退出子 Activity 时如何完成所有 Activity

windows - 我怎么知道加载我的 dll 的 .exe 即将退出?

Php Curl 发送文件和数组数据

c++ - 从文件中读取对象

batch-file - Windows CMD 批处理 : FOR/R with DelayedExpansion

file - 批处理文件: How to read a file?

windows - 在文件中查找一行并替换下一行

docker - 在内部进程崩溃时重新启动 Docker 容器