コマンドラインスクリプトを使用して、コンピューターの複数の設定を調整しています。ただし、出力全体を.txtファイルまたは.logファイルにも記録する必要があります。
ロギングシステムの基本的な知識を使用すると、出力はファイルに書き込まれますが、実際には実行されません。私の場合、それを実行し、後で参照するためにファイルにログインする必要があります。
誰かがこれを行う方法を教えてもらえますか?
前もって感謝します!デンプシー
質問でスクリプトの「実行」を求められ、バッチファイル全体がWindows 8.1のログファイルに出力される場合、簡単な答えは次のとおりです。
これをバッチファイルの先頭に含めます...
@echo off
set LOGFILE=batch.log
call :LOG > %LOGFILE%
exit /B
:LOG
[ your script goes here ]
あなたの質問では、あなたは次のように述べています:
「...出力はファイルに入れられますが、実際には実行されません。私の場合、実行して後で参照するためにファイルにログインする必要があります。」
プログラムが実行中であり、その出力がファイルに書き込まれていると言ったので、あなたは "displayed"の代わりに- "実行"。
それがあなたの意図したものではない場合、おそらくいくつかのサンプル出力で、それがよりよく説明されていればおそらく役立つでしょう。
いずれにせよ、この質問/回答が役に立ったと思う人がいる場合に備えて、この回答を投稿しています。
つまり、基本的には、スクリプトの出力をファイルにキャプチャし、スクリプトの実行中に画面上でスクリプトの出力を確認できるようにする必要があるようです。
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" in "2>&1" inで示されますここのコマンド:
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
ログは実行されません。