我继承了一个环境,其中两个不同的进程使用相同的名称,但它们的可执行文件存储在不同的文件路径中。任何时候都可能没有、一个、另一个或两者都在运行。
当我执行某些操作(如修补)时,我希望与修补目录关联的进程被终止,而不是另一个。
使用各种不同的技术,我可以毫不费力地根据进程名称终止进程,例如(不使用 powershell 不太优雅):
echo Checking for procname process...
tasklist /FI "IMAGENAME eq procname .exe" | !windir!\system32\find /I "procname.exe"
set EL=!ERRORLEVEL!
if !EL! EQU 0 (
echo Killing procname process...
TASKKILL /F /FI "IMAGENAME eq procname.exe"
)
Run Code Online (Sandbox Code Playgroud)
或更优雅(使用powershell)
powershell Clear-Host
powershell Stop-Process -name procname
Run Code Online (Sandbox Code Playgroud)
但是,如果两个进程正在运行,这两种方法都会杀死它们。
不是根据进程名称杀死这些进程,而是如何根据其可执行文件的路径杀死进程?