コンピュータを再起動するスクリプトを作成していますが、スクリプト ログの一部として、shutdown.exe コマンドの成功または失敗を報告する必要があります。失敗した shutting.exe プロセスの出力をファイルにリダイレクトする際に問題が発生しています。コマンド ラインは次のとおりです。
shutdown.exe -r -t 50000 -m \\top34.top.local > c:\output.txt
これを実行すると、画面に次のメッセージが表示されます: 「top34.top.local: 入力したコンピュータ名が有効でないか、対象のコンピュータでリモート シャットダウンがサポートされていません。名前を確認してから再試行するか、システム管理者に問い合わせてください。(53)」これは予想どおりですが、c:\output.txt は空白で、このエラーは含まれていません。スクリプトでは、ログ記録のためにこの行をテキスト ファイルに出力する必要があります。
次のように、CMD をラップすることも試みました。
cmd /c shutdown.exe -r -t 50000 -m \\top34.top.local > c:\output.txt
しかし、これも結果は生成されません。二重の >> (追加) も試しましたが、違いはありませんでした。
かなり調査してみたところ、shutdown.exe は成功したコマンドの出力を stdout にリダイレクトしますが、失敗したコマンドはリダイレクトしないようです。成功したコマンドと失敗したコマンドの両方をファイルにリダイレクトするにはどうすればよいでしょうか?
Windows 2012 R2 を実行
答え1
shutdown
成功したコマンドと失敗したコマンドの両方をファイルにリダイレクトするにはどうすればよいでしょうか?
次のコマンドを使用します。
shutdown.exe -r -t 50000 -m \\top34.top.local > c:\output.txt 2>&1
注意して2>&1
ください後最初の>
リダイレクト。
ハンドルの複製
リダイレクト
&
演算子は、指定されたハンドルからの出力または入力を別の指定されたハンドルに複製します。たとえば、dir
出力を File.txt に送信し、エラー出力を に送信するにはFile.txt
、次のように入力します。dir > c:\file.txt 2>&1