Eu encontrei uma maneira de fazer o que eu queria e pensei em compartilhar a solução.
Esta solução requer o powershell.
powershell Get-Process <ProcessName> ^| Where-Object {$_.Path -like '*<path_fragment>*'} ^| Stop-Process
** o "^ |" tubos são necessários para manter os tubos dentro do intérprete powershell. Usar um pipe normal ("|") parece redirecioná-lo ao interpretador de comandos normal e interrompe o comando.
Para colocar alguns valores reais por trás deste código, assuma que o processo para matar é o Notepad ++:
powershell Get-Process notepad++ ^| Where-Object {$_.Path -like '*Notepad++*'} ^| Stop-Process
Isso pode ser invocado em uma linha de comando a partir de um arquivo em lote (o que é minha intenção).
Se os usuários puderem ver a saída do comando acima, coloque um redirecionamento stderr para nul no final da linha. Quando o Get-Process não encontra algo, emite o que parece ser um erro bastante grave - mas é realmente apenas sua maneira de dizer "não encontrei nada".