|
290) 任意のフォルダを削除するには・・? minority 2002/05/14(火) 15:17 |
|
はじめまして なにとぞご教授願いたいことがあります。 一週間で複数のテキストファイルができるとします(仮に10個) そのテキストファイルを新規のフォルダにまとめます。 まとめたフォルダの名前には日付が入ります (例えば '20020513text'という感じです)。 そうやって一ヶ月過ぎたら4~5個の日付が入ったフォルダができます。 そのフォルダの日付の一番若いモノからその後一週ごとに順番に消していきたいのです。 なんとかバッチファイルで処理したいのですが、何か良い方法はあるでしょうか? よろしくお願いいたします。 |
|
291) Re:自己レス(追加) minority 2002/05/14(火) 15:23 |
|
>はじめまして >なにとぞご教授願いたいことがあります。 > >一週間で複数のテキストファイルができるとします(仮に10個) >そのテキストファイルを新規のフォルダにまとめます。 >まとめたフォルダの名前には日付が入ります >(例えば '20020513text'という感じです)。 >そうやって一ヶ月過ぎたら4~5個の日付が入ったフォルダができます。 >そのフォルダの日付の一番若いモノからその後一週ごとに順番に消していきたいのです。 >なんとかバッチファイルで処理したいのですが、何か良い方法はあるでしょうか? > >よろしくお願いいたします。 環境はwindows2000です |
|
299) Re:任意のフォルダを削除するには・・? SYSOP 2002/05/15(水) 10:34 |
|
minorityさん こんにちは。 「毎週1回自動実行」というところまで自動化させるのはバッチファイル単独ではむずかしいと思いますが、具体的な削除処理部分=「あるディレクトリ内の、 最も文字コードが若い(日付をフォルダ名にしているのであれば最も古い)名前のフォルダだけを削除するバッチファイル」を作ってみました。 3つのバッチファイルをつなぐ格好で、けっこう複雑になってしまいましたが、これに関しては「できなくはない」という感じですね。 YanaKen ---------------------------------------------------------------------------- :DELOLD.BAT REM @ECHO OFF IF EXIST SAMPLE.BAT DEL SAMPLE.BAT IF EXIST SAMPLE.TXT DEL SAMPLE.TXT PAUSE ファイル(ディレクトリ)一覧の取得を開始 FOR %%F IN (200*) DO ECHO REMOVE %%F >>SAMPLE.TXT REM SAMPLE.TXTに、合致するファイルの一覧を書き出す。 REM 各行の先頭には"REMOVE "というコマンド名(バッチファイル名)を指定している。 IF NOT EXIST SAMPLE.TXT GOTO ERR TYPE SAMPLE.TXT | SORT >SAMPLE.BAT REM ↑出力されたSAMPLE.TXTの行を並び替えて書き戻し、「いちばん若いファイル REM 名」が確実に1行目にくるようにする。 REM ※昔のDOSだと同じファイルに書き戻せた記憶があるのだけれど、NT系では REM ダメみたいなので、SAMPLE.TXT→SAMPLE.BATという別ファイルにしてみました。 ECHO 処理を続行します PAUSE SAMPLE.BAT REM ↑出力したバッチファイルに処理を移すため、何も問題なければこのバッチ REM はこの行までで実行終了。万一のため末尾にGOTO。 GOTO QUIT :ERR ECHO ファイル "200*"が見当たらないみたいです。 :QUIT ※生成されたバッチファイルの内容例(CALLなしでREMOVE.BATを呼び出しているため、実際には1行目だけが実行される) :SAMPLE.BAT REMOVE 20020513text REMOVE 20020520text REMOVE 20020527text :REMOVE.BAT REM @ECHO OFF REM 出力したバッチファイルから呼ばれるバッチファイル ECHO ディレクトリ %1 を削除します。問題があるようならCtrl+Pause(Break)で中止してください。 PAUSE IF %OS%.==Windows_NT. GOTO NT REM 環境変数"OS"に"Windows_NT系"かどうかを見分けて分岐 :WIN95/98/Me DELTREE %1 REM 問答無用で削除していいなら DELTREE /Y %1 に変更 GOTO QUIT :NT RD %1 /S REM 問答無用で削除していいなら RD %1 /S /Q に変更 :QUIT ECHO 処理を終了しました。 PAUSE |
|
301) ありがとうございましたw minority 2002/05/15(水) 13:18 |
|
yanakenさん ややこしい質問に丁寧にお答えいただいて ありがとうございました すごいですね☆ びっくりしました! バッチファイルってすごい可能性を秘めていることがわかりました なんでもできそうな気がしてきましたw また、何かあったらよろしくお願いします ちなみに「一週間毎の自動実行」についてはスケジューラーという ツールを使って起動させるのでその点は問題ありません。 そんなところまで考えて頂いてるとは思ってもいませんでしたので・・ 本当にありがとうございました♪ |