2016-07-27 2 views
0

Ich bin derzeit in einem Problem, wo ein "cmd.exe" -Prozess aktiv bleibt, trotz eines bestimmten Dienstes gestoppt wird. Dies wiederum verursacht Probleme für ein automatisiertes Skript, das Aktionen für den Ordner ausführt und verhindert, dass er umbenannt/verschoben wird/etc.Kill spezifische cmd.exe von BAT-Datei mit Zeichenfolge

Da mein automatisches Skript von einer BAT-Datei läuft, glaube ich, dass ich es mit TASKKILL beenden kann. Mit "Process Explorer" suchte ich nach dem Ordnernamen und konnte die "cmd.exe" finden, die ihn benutzte. Ich habe Probleme, einen Weg zu finden, dies zu automatisieren, obwohl es keine Art von "Enthält String" gibt. Mein Pseudo Beispiel ist ...

taskkill /IM cmd.exe /FI "NAME contains TC38247178584278321320778" 
php\php.exe migration.php TC38247178584278321320778 

enter image description here

+0

Hier ist eine alternative Frage, die sogar zu einer besseren Lösung führen kann: [Wie finde ich heraus, welcher Prozess eine Datei geöffnet hat?] (Https://blogs.msdn.microsoft.com/oldnewthing/20120217-00 /? p = 8283) Und die Antwort lautet: Benutze den [Restart Manager] (https://msdn.microsoft.com/en-us/library/windows/desktop/cc948910.aspx). – IInspectable

+0

Das sieht sehr ordentlich aus, obwohl es ein bisschen zu viel ist, wenn ich eine BAT- und PHP-Datei verwende. –

+0

Wenn Sie [PowerShell] verwenden können (https://msdn.microsoft.com/en-us/powershell/mt173057 .aspx) anstelle von Batch-Dateien, wäre dies eine praktikable Option. Selbst wenn mit vielen P/Invoke-Anrufen. – IInspectable

Antwort

0
wmic process where "commandline like '%TC38247178584278321320778%'" get name 

, um zu sehen, was als nächstes Kommando

wmic process where "commandline like '%TC38247178584278321320778%'" call terminate 

wmic /? Siehe töten, wmic process /?, wmic process get /?, wmic process call /?, wmic process set /?, wmic /format /?, wmic /node /? , etc.

Like ist % 0 oder mehr Zeichen und _ ist ein einzelnes Zeichen. Ansonsten =, <>, <, >, <=, =>.