コマンドラインスクリプトを使用して、コンピューターの複数の設定を調整しています。ただし、出力全体を.txtファイルまたは.logファイルにも記録する必要があります。
ロギングシステムの基本的な知識を使用すると、出力はファイルに書き込まれますが、実際には実行されません。私の場合、それを実行し、後で参照するためにファイルにログインする必要があります。
誰かがこれを行う方法を教えてもらえますか?
前もって感謝します!デンプシー
コマンドラインスクリプトを使用して、コンピューターの複数の設定を調整しています。ただし、出力全体を.txtファイルまたは.logファイルにも記録する必要があります。
ロギングシステムの基本的な知識を使用すると、出力はファイルに書き込まれますが、実際には実行されません。私の場合、それを実行し、後で参照するためにファイルにログインする必要があります。
誰かがこれを行う方法を教えてもらえますか?
前もって感謝します!デンプシー
回答:
質問でスクリプトを「実行する」ように求められ、バッチファイル全体がWindows 8.1のログファイルに出力される場合、簡単な答えは次のとおりです。
これをバッチファイルの先頭に含めます...
@echo off
set LOGFILE=batch.log
call :LOG > %LOGFILE%
exit /B
:LOG
[ your script goes here ]
あなたの質問では、あなたは次のように述べています:
「...出力はファイルに保存されますが、実際には実行されません。私の場合、実行して後で参照するためにファイルにログインする必要があります。」
プログラムが実行中であり、その出力がファイルに入れられていると言うので、「実行」ではなく「表示」を意味しているのではないかと思いました。
それがあなたの意図したものではない場合、おそらくいくつかのサンプル出力で、それがよりよく説明されていればおそらく助けになるでしょう。
いずれにせよ、この質問/回答が役に立ったと思う人がいる場合に備えて、この回答を投稿しています。
つまり、基本的には、スクリプトの出力をファイルにキャプチャし、スクリプトの実行中に画面でスクリプトの出力を確認できるようにする必要があるようです。
script 2>&1 | wtee logfile.txt
)
この投稿では、小さなテストバッチファイルを使用しますが、スクリプトは必要に応じて大きく複雑にすることも、単純にすることもできます。
C:\>type a.cmd
@echo off
echo Command: "dir /b a*"
dir /b a*
echo.
echo Command: "dir /b non-existant-file"
dir /b non-existant-file
echo.
これは、このバッチスクリプトを実行するとどうなるかです。
C:\>a.cmd
Command: "dir /b a*"
a.cmd
Command: "dir /b non-existant-file"
File Not Found
テストスクリプトでは、「dir」コマンドの最初の実行は成功し、2番目の実行は失敗することに注意してください。これを行うのは、スクリプトを実行したときに「エラーメッセージ」がどうなるかを示すためだけです。
スクリプトを実行し、リダイレクト(">")を使用して出力をキャプチャすると、これが表示されます
C:\>a.cmd > log.txt
File Not Found
C:\>type log.txt
Command: "dir /b a*"
a.cmd
Command: "dir /b non-existant-file"
C:\>
スクリプトの実行時に「ファイルが見つかりません」というエラーメッセージが画面に表示され、実際にはファイルにキャプチャされていないことに注意してください。これは、「>」がSTDOUTストリームに送信された「通常の出力」をキャプチャするためです。「エラーメッセージ」は通常、STDERRストリームに送信されます。
「通常の出力」と「エラーメッセージ」をキャプチャするには、STDERRストリームもキャプチャする必要があります。これは、次のコマンドの「2>&1」の「2」で示されています。
C:\>a.cmd > log.txt 2>&1
C:\>type log.txt
Command: "dir /b a*"
a.cmd
Command: "dir /b non-existant-file"
File Not Found
UNIXでは、標準のコマンドがあります。 "tee"
「tee」コマンドを使用すると、プログラムからの出力をキャプチャすると同時に、出力を画面に表示できます。
「tee」コマンドはWindowsでは標準ではありませんが、Windows用の「tee」の無料バージョンをwinteeからダウンロードできます
。ダウンロードしたプログラムの名前はです"wtee.exe"
。
以下に示すように、「wtee.exe」プログラムを使用します。
これにより、スクリプト出力が"log.txt"
以前の名前のファイルにキャプチャされ、スクリプトの実行中に画面に出力も表示されます。
C:\>a.cmd 2>&1 | wtee log.txt
Command: "dir /b a*"
a.cmd
Command: "dir /b non-existant-file"
File Not Found
C:\>type log.txt
Command: "dir /b a*"
a.cmd
Command: "dir /b non-existant-file"
File Not Found
このスクリプトはlsを実行し、その出力をlog.txtというファイルに記録します。
exec >log.txt 2>&1
ls
ログは実行されません。