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!))