• 締切済み

バッチのログで前回のログを削除して、現時点のログだけにしたいときの記述方法

お世話になってます。 WindowsOS上で、バッチファイルを作成し実行結果をログにだしています。下記のような記述のみですと、前回処理のログの後ろに、現時、実行したログが続けて上書きされ続けます。 これを、現時点で実行したバッチのログだけしたい場合、記述方法があると思いますが、初心者にてわからない状況です。 記述方法を教えていただけますでしょうか? よろしくお願いします。 例) set LOG=C:\temp\test.log ~~~ echo %DATA% %TIME% >> %LOG% ~~~ echo ~~の処理に成功しました >> %LOG% ~~~ ~~~ :end

みんなの回答

  • Cupper
  • ベストアンサー率32% (2123/6444)
回答No.2

失礼しました  先に現れるコマンド中の 「 >> 」 を 「 > 」 にする でした 「 >> 」はファイルに追記を示し、「 > 」は新規で作成または上書きになります 日付をファイルに書き出して、そのファイルに処理結果を追記しているようですので 日付を書き出すところで新規作成すればOKです

Topjack
質問者

お礼

ありがとうございます。 「 > 」は、新規作成/上書きになるわけですね。 一番最初の記述(日付)のところで、 > を追記して新規作成として ためしたところ、きちんと処理できました。 助かりました。 ありがとうございました。

  • Cupper
  • ベストアンサー率32% (2123/6444)
回答No.1

「 >> 」を「 > 」にする

関連するQ&A

  • ドメインのAdmin権限アカウントを判別させるバッチの記述について

    ■ドメインのAdmin権限アカウントを判別させるバッチの記述について すみません。 また、新規でご質問させて頂きます。 バッチ処理で、 ●ドメインAdmin権限のアカウント(Domain admins)でログオンしたら、終了へいく(goto end) ●一般アカウント権限のアカウント(Domain Users)でログオンしたら、バッチ処理へ行く 構文を記述したのですが、よくわかってません。 下記のような構文と考えてますが if メインAdmin権限のアカウント ~~~ の部分がどう記述するかわかりません。 ご教授頂けますでしょうか? @echo off if メインAdmin権限のアカウント ~~~ goto end rem バッチ処理 :end echo 終了

  • バッチファイルのrdでログを吐きたい

    現在rdコマンドを使い、失敗した場合、成功した場合どのフォルダを削除したか、等のログを吐きたいのですが、ログが吐けません ログの吐き方をご存知の方ご教授いただければと思います フォルダ構成 -log.txt -test -rd.bat rd.batを実行すると、testフォルダが削除され、log.txtに記述されます また、rd.batはtest2を削除しようとしますが、test2というフォルダは存在しないため、エラーをlog.txtに記述します rd.batの内容 @echo off rd test /S /Q >> log.txt rd test2 /S /Q >> log.txt この状態で実行しますと、log.txtは何も書き込まれないままです echoをつけて echo rd test /S /Q >> log.txt にするとrdが実行されません どなたかご存知の方ご教授よろしくお願いいたします

  • バッチファイルでログを残す方法。

    現在バッチファイルである処理を行っているのですが、その処理の前後で指定したログファイルに開始ログ、終了ログを残したいのですが方法がわかりません。 どなたかお分かりの方がいらしたらご教授願います。

  • バッチを1行記述した時の %TIME% について

    バッチファイルの行を、&で連結して1行で実行できるのですが、この際 %TIME% の値が、バッチファイルとして動かしたときと異なるため、理由や対策方法を御存知の方が、おられましたら、アドバイスを頂ければと存じます。 ■入力コマンド行 CLS & ECHO 開始時刻:%TIME% & TIMEOUT /t 2 & ECHO. & ECHO 終了時刻:%TIME% ■期待値 現在時刻が表示 2秒待機のメッセージが表示 2秒後の時刻が表示 ■実際の相違 終了時点の時刻は開始の2秒後になっていることを期待しているのですが、実際には待ち時間を幾ら増やしても、開始時刻が表示されてしまいます。 ■実行例 開始時刻:17:35:58.34 2→1→0 秒待っています。続行するには何かキーを押してください ... 終了時刻:17:35:58.34 ■背景 大きなファイルをコピーするとき、どのくらい時間が掛かるのかな?をメモする意味で、1行バッチで記述してみたのですが、どんなに大きなファイルを記述しても、終了時刻が開始時刻と同じ文字列で表示されることから、コピー部分を2秒待ちのコマンドに置き換えて、今回の質問に至りました。 コマンド1つづつ 改行してバッチファイルにして動作させると、終了時刻が更新されているのですが、1行で記述すると、終了時刻が開始時刻になっちゃうんです・・・ 原因や、解決方法(1行で期待した終了時刻を表示)をお解りの方がおられましたら、ぜひアドバイスを宜しくお願い致します。

  • バッチファイルでPINGログ取得

    バッチファイルでPINGのログを取得したいと考えています。 下記のバッチを作成して実行してみましたが @echo off set LOG=log.log echo "------------ START -------------" >> %LOG% ping -w 1 -n 1 localhost >> %LOG% 「プロセスはファイルにアクセスできません。別のプロセスが使用中です。」とエラーメッセージが延々と表示されます。 ログにはECHOで出力したSTARTしかありません。 コマンドラインから上記のPINGを打つと正常に終了します。 使用しているOSはWinXP SP2です。 何が原因なのか解決法をご存知の方がいらっしゃいましたら宜しくお願いします。

  • バッチファイルでのエラー処理の方法を教えてください

    バッチファイルでのエラー処理の方法を教えてください 例えば、以下のようなバッチファイルがあったとき echo ▼ フォルダ名を入れ替えます(処理1) cd "C:\Test1" move Work temp move Work_bak Work move temp Work_bak echo ▼ フォルダ名を入れ替えます(処理2) rem cd "C:\Test2" move Work temp move Work_bak Work move temp Work_bak (処理1)の時に、 「プロセスはファイルにアクセスできません。別のプロセスが使用中です。」 等のエラーによって、フォルダ名の変更ができなかったとき、 そのエラーがでた以降の処理を行いたくないのですが、 どのように書けばよろしいのでしょうか? 宜しくお願いいたします。 OSはWindows系です。

  • 複数の自作バッチプロラムの共有ログを採取する方法

    複数の自作バッチプロラムの共有ログを採取する方法 os:windows xp バッチプログラムの開始前後にログ出力をします。 普通にバッティングせずに動くと、後述のサンプル・ログ(1)のように綺麗にとれます。 しかし、 バッティングした際に正しく取れません。 dos batファイルでやったところ、掴んでいるときに後から行った方の出力がされません。  → サンプル・ログ(1) それならと、 vbsで同じ事を作ってみました。 すると、掴んでいるときに後から行った方がエラーでコケました。 ファイルの定義やオープンの時に「掴んでいたら無制限に待つ」とか「タイムアウトまで待つ」とか、そういう事はできるでしょうか? 複数のアプリから同じファイルにIOするには仕組みとして何かが足りないのでしょうか? 以上、よろしくお願いします。 ■サンプル・ログ (1) ===== FILE_TIME.log ===== 2010/03/05- 9:00:00.00,処理1,開始 2010/03/05- 9:00:00.00,処理2,開始 2010/03/05- 9:30:00.00,処理1,終了 2010/03/05- 9:40:00.00,処理2,終了 ===== FILE_TIME.log ===== (2) ===== FILE_TIME.log ===== 2010/03/05- 9:00:00.00,処理1,開始 2010/03/05- 9:30:00.00,処理1,終了 2010/03/05- 9:40:00.00,処理2,終了 ===== FILE_TIME.log ===== ■サンプル・バッチファイル ===== Shori1.bat ===== @echo off echo %date%-%time%,処理1,開始 >> FILE_TIME.log rem 処理1呼び出し echo %date%-%time%,処理1,終了 >> FILE_TIME.log ===== Shori1.bat ===== ===== Shori2.bat ===== @echo off echo %date%-%time%,処理2,開始 >> FILE_TIME.log rem 処理2呼び出し echo %date%-%time%,処理2,終了 >> FILE_TIME.log ===== Shori2.bat ===== ■サンプル・vbs ===== Shori1.vbs ===== Set ObjSFS = WScript.CreateObject("Scripting.FileSystemObject") Set ObjLogFile = ObjSFS.OpenTextFile("FILE_TIME.log", 8, True) ObjLogFile.WriteLine Now() & ",処理1,開始" ObjLogFile.Close rem 処理1呼び出し Set ObjLogFile = ObjSFS.OpenTextFile("FILE_TIME.log", 8, True) ObjLogFile.WriteLine Now() & ",処理1,終了" ObjLogFile.Close ===== Shori1.vbs ===== ===== Shori2.vbs ===== Set ObjSFS = WScript.CreateObject("Scripting.FileSystemObject") Set ObjLogFile = ObjSFS.OpenTextFile("FILE_TIME.log", 8, True) ObjLogFile.WriteLine Now() & ",処理2,開始" ObjLogFile.Close rem 処理2呼び出し Set ObjLogFile = ObjSFS.OpenTextFile("FILE_TIME.log", 8, True) ObjLogFile.WriteLine Now() & ",処理2,終了" ObjLogFile.Close ===== Shori2.vbs =====

  • バッチファイル 2つのログに出力 短縮版

    お世話になっております。 WindowsXP環境にて下記のバッチファイルがあります。 コード-------------------------------------------------------------------------------- rem === 変数設定 =============================================================== rem --- 時間変数 --- set yyyy=%date:~-10,2% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% set HH=%TIME:~0,2% set MM2=%TIME:~3,2% set SS=%TIME:~6,2% rem --- フォルダ変数 --- set LOG_DIR1=D:\test rem --- ファイル変数 --- set LOG_FILE1=LOG.txt set LOG_FILE2=LOG_ALL.txt set LOG_FILENAME1=%LOG_DIR1%\%LOG_FILE1% set LOG_FILENAME2=%LOG_DIR1%\%LOG_FILE2% set BAT_FILE1=test.bat rem コマンド拡張機能有効化 setlocal ENABLEEXTENSIONS rem === 変数設定 =============================================================== REM <開始処理>=============== call :TIME echo %BAT_FILE1% 処理日 = %yyyy%%yy%/%mm%/%dd% 処理開始時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME1% echo. >> %LOG_FILENAME1% echo %BAT_FILE1% 処理日 = %yyyy%%yy%/%mm%/%dd% 処理開始時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME2% echo. >> %LOG_FILENAME2% rem 現在の日付/時間を取得 :TIME set yyyy=%date:~-10,2% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% set HH=%TIME:~0,2% set MM2=%TIME:~3,2% set SS=%TIME:~6,2% exit /b コード-------------------------------------------------------------------------------- 上記プログラムは日付を2つのログに出力していますが、 echo %BAT_FILE1% 処理日 = %yyyy%%yy%/%mm%/%dd% 処理開始時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME1% echo. >> %LOG_FILENAME1% echo %BAT_FILE1% 処理日 = %yyyy%%yy%/%mm%/%dd% 処理開始時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME2% echo. >> %LOG_FILENAME2% と二重になっている無駄なコードとなり、見栄えが良くないです。 これを1つのコードで2つのログファイルに出力可能な短縮プログラムは可能でしょうか? ご存知の方がいましたら、ご教授願いますでしょうか? 何卒宜しくお願い致します。

  • 指定日数経過したファイルをバッチを使って削除する方法

    お世話になります。 今回質問したいのは、あるフォルダ内で作成から5日経過したファイルを削除するバッチの作成方法です。 例えば del /s /q "c:\temp" これを実行するとtempフォルダ内のファイルがサブフォルダを残してすべて削除されます。 これを「作成から5日経過したもののみ」と条件をつけたいのです。 あと、できたら「5日以上アクセスのないもの」という条件もあわせて教えていただければ幸いです。 今回業務の関係で上記処理をバッチでの実行に限定されています。 VBSなどでもできるとは思いますが、バッチコマンドを教えていただければと思います。 わがままを言って申し訳ありませんが、よろしくお願いします。

  • ログオフ状態の時にバッチを実行させる方法

    毎回勉強させていただいております。 さて質問させていただきます。 タスクマネージャーで時間を設定して、バッチを実行させたいのですが、実行開始時間のときにログオフ状態だと、バッチが起動しないのです。起動させる方法はあるのでしょうか。またあるとすれば、どのような方法かご教授いただけないでしょうか。 よろしくお願いいたします。