- 締切済み
[コマンドプロンプト]世代管理+ログの圧縮
こんにちは、お世話になります。 現在コマンドプロンプトを用いて以下の動作を行うと考えております。 (1)数世代(3世代)のログを残して以前(4世代以前)のログはlhacaで圧縮します。 (2)古いログは削除します。(予定) 現在記述している内容は以下になります。 echo ******************************************************>>C:\testbat\result.log set LHACA_PATH="C:\Program Files\Lhaca\Lhaca.exe" echo %date%>>C:\testbat\result.log for /F "skip=3" %%F in ('dir /B C:\testbat\sample*') do echo %%F>>C:\testbat\result.log for /F "skip=3" %%F in ('%LHACA_PATH% C:\testbat\sample*') do echo %%F>>C:\testbat\result.log echo ******************************************************>>C:\testbat\result.log これでBATを実行すると「C:\testbat\sample*」内のファイルのひとつだけが圧縮されました。 スキップしたファイル以外を全て個別に圧縮するにはどうすればよいでしょうか? お手数をおかけし、申し訳ありませんがご教授をお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Tacosan
- ベストアンサー率23% (3656/15482)
for の仕様を確認してください. for /F "skip=3" %%F in ('%LHACA_PATH% C:\testbat\sample*') do echo %%F>>C:\testbat\result.log というのは, 結果的に「%LHACA_PATH% C:\testbat\sample* の出力結果の 4行目以降を C:\testbat\result.log に追加する」ことになっていませんか?
- Tacosan
- ベストアンサー率23% (3656/15482)
5行目は何を意図しているのですか? あと, lhaca の仕様がわからないのですが, コマンドラインにファイル名を並べたらそれらを全部圧縮してくれるものなのですか? もしそうだとしたら, 各ファイルがそれぞれ別のファイルに圧縮されるのですか? それとも, 全体を 1つのファイルにまとめるのですか? はたまた別の動作をするのですか?
お礼
返信ありがとうございました。 五行目とは for /F "skip=3" %%F in ('%LHACA_PATH% C:\testbat\sample*') do echo %%F>>C:\testbat\result.log こちらのことであってますでしょうか? やろうとしている内容としては、ログファイルを3つスキップして、 4つ目から順次LHACAに送って圧縮しようとしております。 LHACAのコマンドを個別に '%LHACA_PATH% C:\testbat\sample1.log '%LHACA_PATH% C:\testbat\sample2.log '%LHACA_PATH% C:\testbat\sample3.log と記載したものを実行すると同じフォルダ内に圧縮ファイルが 生成されたのでFOR文で名前を切り替えて送れば圧縮できないかなぁっと考えました。