0

私はスクリプトの初心者です。サーバー Win2003 でクォータを作成するバッチ スクリプトを作成しました。出力としてログ ファイルを持ちたいのですが、私が知っている唯一のコマンドは、各コマンドのログ ファイルを作成する >>logfile.txt です。

すべてのコマンドが正常に適用されたかどうかをログに記録する 1 つの logfile.txt が必要です...

誰かがコーディングを手伝ってくれますか?

@echo off
echo.
Dirquota quota add "J:\P1\BD OG" /Limit:60GB /Type:Hard /Status:Enable /Add-Threshold:80 /Add-Notification:80,M,e-mail-warning.txt
Dirquota quota add "J:\P1\BD Chair" /Limit:60GB /Type:Hard /Status:Enable /Add-Threshold:80 /Add-Notification:80,M,e-mail-warning.txt
Dirquota quota add "M:\P2\BD Arena" /Limit:50GB /Type:Hard /Status:Enable /Add-Threshold:80 /Add-Notification:80,M,e-mail-warning.txt
Dirquota quota add "K:\P3\BD Home" /Limit:30GB /Type:Hard /Status:Enable /Add-Threshold:80 /Add-Notification:80,M,e-mail-warning.txt
echo.
pause
4

2 に答える 2

2

Aacini がコメントで述べているように、バッチ ファイルを呼び出すときに出力をリダイレクトするだけです。バッチ スクリプトの名前が「myScript.bat」の場合は、myScript >myLog.txt 2>&1. 既存のログ ファイルに追加する場合は、 を使用しますmyScript >>myLog.txt 2>&1

最後に奇妙な見た目のリダイレクトが行われると、stderr のエラー メッセージが stdin と同じ場所 (この場合はログ ファイル) にリダイレクトされます。これは、DIRQUOTA が生成する可能性のあるエラー メッセージをキャプチャできるようにするために必要です。

このアプローチには 1 つの問題があります。PAUSE 出力がログ ファイルにも表示され、画面上のキーを押すプロンプトが表示されません。画面とファイルの両方に出力を送信する TEE ユーティリティの Windows ポートを取得することで、これを解決できます。

または、スクリプトを次のように変更して、通常どおり呼び出すこともできます。

@echo off
call :main >myLog.txt 2>&1
pause
exit /b

:main
echo.
Dirquota quota add "J:\P1\BD OG" /Limit:60GB /Type:Hard /Status:Enable /Add-Threshold:80 /Add-Notification:80,M,e-mail-warning.txt
Dirquota quota add "J:\P1\BD Chair" /Limit:60GB /Type:Hard /Status:Enable /Add-Threshold:80 /Add-Notification:80,M,e-mail-warning.txt
Dirquota quota add "M:\P2\BD Arena" /Limit:50GB /Type:Hard /Status:Enable /Add-Threshold:80 /Add-Notification:80,M,e-mail-warning.txt
Dirquota quota add "K:\P3\BD Home" /Limit:30GB /Type:Hard /Status:Enable /Add-Threshold:80 /Add-Notification:80,M,e-mail-warning.txt
echo.
exit /b
于 2014-07-02T11:17:21.213 に答える