プロセスの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
、すべて同じ結果になります。
どうしてこれなの?コマンドにバッチからの出力を生成させる方法は?
ほとんどのプログラミング言語と同様に、バッチファイルにもエスケープ文字があります。コマンドラインで使用される_%
_記号は、バッチファイルのエスケープ文字であり、コマンドに異なる意味を与えます。実際には、_%Java%
_という名前の変数を探しています。
この問題を解決するには、バッチファイルで_%%
_の代わりに_%
_を使用します。他のエスケープ文字の詳細と情報を確認するには、 ここ を参照してください。
次のコマンドはバッチファイルで機能するはずです。
wmic /output:process.pid process where (Name like '%%Java%%' and commandLine like '%%part-of-the-path%%') get ProcessId