質問: 10 **【現在作成しているスクリプト】** @echo off pushd X:\data2\Log set tmp=X:\data2\Log\log_text.txt :top timeout 3 dir | find /I "KP2_backup_2019_*" LOG_Backup_Subplan_1_*.txt >> %tmp% goto top 上記ログ、Command:部分の "KP2_backup_2019_~.trn"の部分を20分間に1回のペースで テキストファイルに定期的に出力させたいのですが、 テキストファイルは出力されますが、 肝心のログの中身が出力出来ない状態です。 解決方法についてご存じの方がいらっしゃいましたら ご教示いただければ幸甚です。
回答: forfilesコマンドを使えばうまくいくような気がします。 例えば... ``` set logfile=X:\data2\Log\log_text.txt forfiles /P X:\data2\Log /M "OG_Backup_Subplan_1_*.txt" /C CMD.EXE FINDSTR "KP2_backup_2019_*" @path >> %logfile% ``` 老婆心ながら環境変数"tmp"は、既にシステムで使用されているので別の名前にした方が良いです。 tmpは作業用一時ファイルの作成場所として使用されることが多いため、障害が引き起こすことが予想されるためです。 また、gotoを使用してループさせていますが、この方法は止めることを推奨します。 環境によっては、バッチを停止できなくなることがあります。 20分毎に起動させるならWindowsタスクスケジューラを使用することを進めます。