1. ホーム
  2. スクリプト・コラム
  3. その他

batスクリプトからログを出力する方法

2022-01-07 06:17:08

I. batスクリプトの一般的な出力コマンドは以下の通りです。 "echo output content". cmdウィンドウやファイルにテキストを出力するにはechoを使用します。batスクリプトは大文字と小文字を区別しないスクリプト言語なので、大文字と小文字の区別は問題ありません。

REM output in a command line window
echo Hello World!
pause


を実行すると、コマンドラインウィンドウにHello Worldと出力されます!

batで開いたコマンドラインウィンドウから上記のコマンドを実行すると、CMDの実行関連のプロンプトメッセージも出力されます。余分な出力をオフにしたい場合は、@ECHO OFF を使用することができます(例)。

@ECHO OFF
REM's pure output in the command line window
echo Hello World!
pause

次に、コンテンツをファイルに出力します

リダイレクトを使って、出力をファイルに保存することができます。

リダイレクトの記号としては、>記号と>記号がよく使われます。>は元のファイルの内容を空にし、>>はファイルの内容を追加し、ファイルが存在しない場合はファイルを作成します。

詳しい使い方は以下の通りです。

echo Hello World >file.txt
echo Hello World 1>file.txt

echo Hello World 2>file.txt

       実行すると、Hello Worldをfile.txtに出力します。この2行のコードは等価です。ここで、1 は標準出力をリダイレクトすることを意味し、これは通常の出力内容である。そして、2>file.txtは、エラーメッセージをfile.txtに出力するという意味で、画面にはHello Worldが表示され、エラーメッセージだけがfile.txtに保存されることになります。

3つ目は、出力がファイルに追加されることです。

echo Hello World >>file.txt



上記の文は、2 >で内容の追記を示し、file.txtの内容が空でなければ、最終行の後に別行でHello Worldが保存されます。

四、bat ファイルの出力を txt ファイルに入れる。

        時々、多くの内容を出力することに重点を置いたバッチ実行を書きますが、batの中であまり頻繁にoutput to fileコマンドを試したくないので、どうしたらいいでしょうか。

次のような方法を試してみることができます。

@echo off
call "Batch path">D:\Results.txt
start notepad D:\results.txt

REM Then there is the following
@echo off
call "D:\procedure.bat">D:\results.txt
start notepad D:\results.txt

[例】をご覧ください。]

@ECHO OFF
echo Check and stop the related service ....
echo ------------------------------
for %%i in (wuauserv,yun-wps) do (
  sc query "%%i" >nul && (
    echo %date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,8% start stopping service: %%i >>"%date:~0,4%-%date:~5,2%-%date:~8,2%_%time:~0,2%.txt" ;
    net stop "%%i"
    
    ::@ECHO start uninstall service: %var%
    ::SC DELETE %var%
    
    REM net start "%%i"
    REM wmic SERVICE where name="%%i" get State|findstr /i "RUNNING" && ( echo %%i is started. )||( echo %%i not started! Please check the log message. )
  )||(
    echo %date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,8% service does not exist: %%i automatically skipped>>"%date:~0,4%-%date:~5,2%-%date:~8,2%_%time:~0,2%.txt& quot;
  )
)
echo Execution complete

REM pause
exit /B


上記のスクリプトをtxt内にコピーし、名前を変えてANSIフォーマットで保存します。 WinService-Stop.bat 次に、同じディレクトリに新しいtxtを作成し、以下の段落をコピーしてください。

set ws=WScript.CreateObject("WScript.Shell")
ws.Run "WinService-Stop.bat",0


        上記のスクリプトをtxtにコピーしてANSI形式で保存し、名前を: start bat file.vbs に変更すると、batスクリプトを静かに起動してCMDウィンドウを隠し、コマンドラインウィンドウをユーザーに知覚させないために使用されます。この2つのファイルは同じディレクトリにあることに注意してください。

        次に、"Computer-Administration-Task Scheduler" に新しいタスクスケジュールを追加し、"Start bat file.vbs" を一定間隔で実行して、Windowsの自動更新を自動的にオフにするように設定します。

<スパン 概要

上記はbatスクリプトの出力ログ方法です、お役に立てれば幸いです、もし何か質問があれば、私にメッセージをください、時間内に返信します。また、スクリプトハウスのウェブサイトを応援してくださる皆様に感謝いたします。