Die wmic-Ausgabe ist leer, wenn sie von der Batchdatei ausgeführt wird, enthält jedoch Informationen, wenn sie von cmd ausgeführt wird

665
sinned

Ich habe diesen Befehl wmic, der die PID meines Prozesses herausfindet und von cmd aus einwandfrei funktioniert, aber bei Ausführung in einer bat-Datei keine Ausgabe erzeugt:

wmic /output:process.pid process where (Name like '%java%' and commandLine like '%part-of-the-path%') get ProcessId 

Wenn ich es von cmd aus laufe, wird eine Datei erzeugt

ProcessId 19352 

Auf die Info folgen zwei leere Zeilen. Wenn ich es von einer Batchdatei aus laufe, wird nur eine Datei mit zwei leeren Zeilen erzeugt.

Ich habe versucht /output:filename, > filenameund | more > filenamealle mit dem gleichen Ergebnis.

Warum ist das? Wie kann der Befehl die Ausgabe aus dem Stapel erzeugen?

1
Ersetzen Sie in der Batchdatei "%" durch "%%"? "% jave%" an der Eingabeaufforderung muss "%% java %%" in der Stapeldatei sein. Sandeep vor 6 Jahren 1
`% java%` ist vorher nicht eingestellt. Wie SQL verwendet wmic dies als Sternchen für jeden Text. Ich möchte nicht, dass batch die Zeichenfolge interpretiert, sondern wmic so wie es ist. Die Lösung von @Sandeep scheint zu funktionieren. sinned vor 6 Jahren 0

1 Antwort auf die Frage

2
Sandeep

Wie bei den meisten Programmiersprachen enthält eine Batchdatei auch Escape-Zeichen. %Das in der Befehlszeile verwendete Zeichen ist ein Escape-Zeichen in der Stapeldatei und gibt dem Befehl eine andere Bedeutung. Es sucht tatsächlich nach einer Variablen namens %java%.

Um dieses Problem zu beheben, verwenden Sie %%anstelle von %Batch-Datei. Weitere Details und Informationen zu anderen Fluchtzeichen finden Sie hier .

Der folgende Befehl sollte in der Batchdatei funktionieren.

wmic /output:process.pid process where (Name like '%%java%%' and commandLine like '%%part-of-the-path%%') get ProcessId