我正在嘗試編寫一個批處理來檢查正在運行的進程「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