私は以下のWindows共有ドライブの状態を確認する簡単なヘルスチェックスクリプトを持っています。バッチファイルでSTDERRからファイルにエラー出力がリダイレクトされないのはなぜですか?
コマンドを実行すると、希望の出力が得られます。しかし、エラーがあった場合、出力ファイルに出力されません。私は可能な解決策としてSTDOUTとSTDERRを見てきましたが、私はまだこれを動作させることができません。
誰でもこのコードを教えてください。
@echo off
echo START > results.txt
for /f %%s in (server_list.txt) do (
echo %%s >> results.txt
for /f "delims=" %%n in ('net use \\%%s') do (
echo %%s - %%n >> results.txt 2> err.txt
)
)
出力ファイルは次のようになります。
START
server1
server1 - The command completed successfully.
server2
server2 - The command completed successfully.
ただし、err.txt
ファイルには何もありません。私はファイルserver_list.txt
にいくつかの間違ったエントリを入れて、テストのためのいくつかのエラーを得るようにしました。エラー出力は、err.txt
ファイルに出力されるのではなく、コマンドラインウィンドウに表示されます。
エコーは標準エラー出力に書き込まれません。 net.exeは実行しますが、出力をリダイレクトしません。これをもう一度考え、cmd.exeの出力をリダイレクトすることを検討する必要があります –