我正在尝试编写一个批处理来检查正在运行的进程“example.exe”的实例数量,如果有两个或多个实例,请保持运行。但是,如果只有一个实例正在运行,请结束该过程。这是我有什么:批处理文件 - 如果只有一个实例正在运行,如何终止进程?
@echo off
wmic process where name="example.exe" | find "example" /c > %temp%\variable.txt
set /p value=<%temp%\variable.txt
if %value% lss 2 goto endprocess
if %value% gtr 1 goto continue
:endprocess
start taskkill /f /im example.exe
:continue
ECHO continue
@echo off
我的问题是这样的:它总是认为值是lss 2(它认为有少于2个进程运行的实例)。但是,在我的任务管理器中,我可以看到显然有两个实例正在运行。我认为这可能是一个定义价值的问题?我不知道,我对此很新。任何帮助?谢谢!
UPDATE
好吧,我现在已经改成了这个(由脱线建议)
@echo off
wmic process where name="example.exe" | find "example" /c > "%temp%\variable.txt"
set /p value=<"%temp%\variable.txt"
if %value% equ 1 goto endprocess
if %value% neq 1 goto continue
:endprocess
start taskkill /f /im example.exe
:continue
ECHO continue
@echo off
这仍然没有确切地工作,但我改变了实例的个数从1到0,它结束了这个过程。换句话说,1个进程正在运行,但是这个批处理文件认为0正在运行。现在有什么想法?
我认为代码不会进入if语句内部并继续正常流程。所以每次它杀死进程。只是为了澄清,在unix中是否有任何命令名为lss或gtr。因为我对unix太陌生了。但是我只看到了-lt和-gt命令。所以只是为了确认。 – user3256147