Я успадкував середовище, в якому два різні процеси використовують однакові імена, але їх виконувані файли зберігаються в різних шляхах до файлів. Жоден, один, другий або обидва не можуть працювати в будь-який час.
Коли я виконую певні операції (наприклад, виправлення), я хочу, щоб процес, пов'язаний з каталогом патчу, був припинений, але не інший.
Використовуючи різні методи, я не маю проблем із завершенням процесів, заснованих на назві процесу, таких як (менш елегантно, не використовуючи powerhell):
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"
)
або більш елегантно (використовуючи паттерн)
powershell Clear-Host
powershell Stop-Process -name procname
Однак ці два способи знищують обидва процеси, якщо вони запущені.
Замість того, щоб вбивати ці процеси на основі назви їхнього процесу, як я можу вбити процес, заснований на шляху до їх виконуваного файлу?
WMIC PROCESS WHERE name="calc.exe" DELETE
іWMIC PROCESS LIST FULL