Windows 如何在批处理文件(任务列表)中用空格标识IMAGENAME?
现在,我正在编写一个批处理文件,其中包含一行代码,用于标识进程是否正在从我的进程列表中运行 我指的是:Windows 如何在批处理文件(任务列表)中用空格标识IMAGENAME?,windows,batch-file,tasklist,Windows,Batch File,Tasklist,现在,我正在编写一个批处理文件,其中包含一行代码,用于标识进程是否正在从我的进程列表中运行 我指的是: FOR /F %%x IN ('tasklist /NH /FI "IMAGENAME eq %EXE%"') DO IF %%x == %EXE% goto ProcessFound EXE预先定义为EXE=My Process Here.EXE 我的批处理文件适用于正常进程,但正如您在My Process Here.exe中看到的,My and Process和Here.exe之间有一
FOR /F %%x IN ('tasklist /NH /FI "IMAGENAME eq %EXE%"') DO IF %%x == %EXE% goto ProcessFound
EXE预先定义为EXE=My Process Here.EXE
我的批处理文件适用于正常进程,但正如您在My Process Here.exe中看到的,My and Process和Here.exe之间有一个空格,无法识别
有办法解决这个问题吗?我正在寻找的进程有空格,我无法更改进程名称,因为如果我更改,它相关的程序将不会运行
谢谢。@ECHO OFF
SETLOCAL
SET exe=7+任务栏调整器.exe
对于任务列表中的/F%%x^ | FINDSTR/i/b/L/c:%EXE%%,如果没有错误,请执行级别1转到ProcessFound1
未找到回显%exe%
又来了
:Processfound1
找到回显%exe%!
:再一次
SET exe=我不存在。exe
对于任务列表中的/F%%x^ | FINDSTR/i/b/L/c:%EXE%%,如果没有错误,请执行级别1转到ProcessFound1
未找到回显%exe%
后藤:eof
:Processfound2
找到回显%exe%!
后藤:EOF
这可能对你有用。当然,您需要修复进程名称。@echo off
setlocal enableextensions disabledelayedexpansion
set exe=My Process Here.exe
已找到设置进程=
对于/f标记=5 delims=,%%a in'
任务列表/fi imagename eq%exe%/fo:csv/nh
'do set processFound=1
如果找到定义的进程
回显%exe%正在运行
其他的
回显%exe%未运行
任务列表将以csv格式检索指定图像名称的进程列表,无标题
有两个选项:进程未运行,然后输出中没有csv记录;或者进程正在运行,但输出中有csv记录
for命令将尝试标记tasklist的输出,并使用逗号作为分隔符检索行中的第5个标记
如果tasklist的输出是csv记录,则该令牌将存在,可替换参数将获取数据,并且将执行do子句中的代码。如果输出不是csv记录,则令牌将不存在,并且do子句中的代码将不会执行。前面的回答都不适用于我用嵌入空格标识图像名。我所做的工作是使用delims=tab,其中tab是实际的tab字符,如中所示:
FOR /F "delims=tab" %%X IN ('tasklist /NH /FI "IMAGENAME eq !EXE!"') DO (...
生成的%%X将是对应于的整个任务列表项!EXE!imagename(如果找到)或INFO:未运行任何符合指定条件的任务,如果未找到,则可以通过以下方式对其执行操作:
SET TASKLINE=%%X
IF "!TASKLINE!"=="!TASKLINE:No tasks are running=!" (
ECHO !EXE! FOUND IN !TASKLINE!
) ELSE (
ECHO !EXE! NOT FOUND IN !TASKLINE!))