web-dev-qa-db-ja.com

バッチファイルから実行するとwmic出力は空になりますが、cmdから実行すると情報が含まれます

プロセスのPIDを見つけて、cmdから正常に機能する、このwmicコマンドがありますが、batファイルで実行すると出力の生成を拒否します。

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

Cmdから実行すると、次のファイルが生成されます。

ProcessId
19352

情報の後には2行の空白行が続きます。バッチファイルから実行すると、空白行が2行のファイルしか生成されません。

私は試した /output:filename> filenameおよび| more > filename、すべて同じ結果になります。

どうしてこれなの?コマンドにバッチからの出力を生成させる方法は?

1
sinned

ほとんどのプログラミング言語と同様に、バッチファイルにもエスケープ文字があります。コマンドラインで使用される_%_記号は、バッチファイルのエスケープ文字であり、コマンドに異なる意味を与えます。実際には、_%Java%_という名前の変数を探しています。

この問題を解決するには、バッチファイルで_%%_の代わりに_%_を使用します。他のエスケープ文字の詳細と情報を確認するには、 ここ を参照してください。

次のコマンドはバッチファイルで機能するはずです。

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

2
Sandeep