Ответ 1
taskkill
не может этого сделать. Но вы можете использовать PowerShell, если это вариант:
(Get-WmiObject Win32_Process | Where-Object { $_.Path.StartsWith('C:\Dir1') }).Terminate()
Как убить процесс по имени и исправить из определенного пути с помощью taskkill?
taskkill/F/IM
Конечно, он не может отличить 2 процесса от двух разных мест C:\Dir1 и C:\Dir2
Имеет ли список задач какой-либо переключатель для получения имени пути
taskkill
не может этого сделать. Но вы можете использовать PowerShell, если это вариант:
(Get-WmiObject Win32_Process | Where-Object { $_.Path.StartsWith('C:\Dir1') }).Terminate()
На основании ответа Джой:
wmic Path win32_process Where "CommandLine Like '%-jar selenium-server.jar%'" Call Terminate
Таким образом, я избегаю исключения NullReferenceException, когда Path равно null (не знаю почему) и не нуждается в PowerShell.
Ссылка: https://superuser.com/questions/52159/kill-a-process-with-a-specific-command-line-from-command-line
Используйте следующую команду (она работает даже без powershell):
wmic process where ExecutablePath='C:\\Dir1\\image.exe' delete
ПРИМЕЧАНИЕ. ExecutablePath доступен для всех процессов только в том случае, если вы запускаете wmic
в качестве администратора в Windows 8
Кажется, что ваше дело, когда у вас есть настраиваемые службы с тем же именем процесса, установленным на компьютере, с разных путей. Если это действительно сценарий, у вас, вероятно, есть разные имена служб, которые могут использоваться в качестве дополнительного фильтра.
См. Синтаксис:
taskkill /S {REPLACE_WITH_SERVER_IP_OR_NAME} /F /FI "IMAGENAME eq {REPLACE_WITH_PROCESS_NAME}" /FI "SERVICES eq {REPLACE_WITH_SERVICENAME}"
См. пример:
taskkill /S 10.10.1.1 /F /FI "IMAGENAME eq tomcat7.exe" /FI "SERVICES eq tomcatServiceEngine"
Список всех доступных фильтров можно найти команда taskkill