最初のいくつかの予備知識:
dir /od /tw /s ..\path\to\somedir
:すべてのディレクトリのファイル+サブディレクトリを、日付+最終変更時刻でソートして一覧表示します。
dir /o-d /tw /s ..\path\to\somedir
:同じですが、逆の順序です(最後から古いもの)。
次に、既存のパスのローカル例を使用します。さあ行こう:
dir /tc /o-d /s gstmp\*yell*.tif ^| findstr 2010
Volume in Laufwerk C: hat keine Bezeichnung.
Volumeseriennummer: D479-1658
Verzeichnis von C:\downloads\gstmp
08/06/2010 05:01 PM 19 compression-g4-emptypage-tiffsep1(Yellow).tif
08/06/2010 05:00 PM 19 compression-lzw-emptypage-tiffsep1(Yellow).tif
08/06/2010 04:57 PM 19 compression-g3-tiffsep1(Yellow).tif
08/06/2010 04:57 PM 19 compression-crle-tiffsep1(Yellow).tif
08/06/2010 04:56 PM 19 compression-pack-share-tiffsep1(Yellow).tif
08/06/2010 04:53 PM 19 compression-g4-share-tiffsep1(Yellow).tif
08/06/2010 04:52 PM 19 compression-lzw-share-tiffsep1(Yellow).tif
08/06/2010 04:51 PM 19 compression-default-share-tiffsep1(Yellow).tif
08/06/2010 03:59 PM 19 compression-none-share-tiffsep.Yellow.tif
08/06/2010 03:55 PM 19 share-tiffsep.Yellow.tif
10 Datei(en) 190 Bytes
現時点では、追加のヘッダーと要約情報は気に入らない。何かをフィルタリングすることで、これを取り除くことができます。単に「2010」を使用します。
しかし、今、本当の問題が始まります。作成日時は、「ロケール」に応じて、異なる形式で印刷される可能性があります。あなたはそれが現在私をどのように探しているか、あなた自身を見ることができます。
番号順に正確に一致する形式で日付を表示できれば、うまくいきませんか?次に、単純な数値比較によって削除を決定するロジックを実装できます。試してみましょう(これが私にとってうまくいく場合、必ずしもあなたのために働くとは限りません-あなたはあなたのロケールに採用する必要があるかもしれません)。私が使用している「バッククォート」( "``")と^記号に注意してください。
for /f "usebackq tokens=1-7* delims=/: " %I in (`dir/tc/o-d/s gstmp\*yell*.tif ^
^| findstr 2010`) do echo. %I %J %K %L %M %N %O %P
ここに出力:
08 06 2010 05 01 PM 19 compression-g4-emptypage-tiffsep1(Yellow).tif
08 06 2010 05 00 PM 19 compression-lzw-emptypage-tiffsep1(Yellow).tif
08 06 2010 04 57 PM 19 compression-g3-tiffsep1(Yellow).tif
08 06 2010 04 57 PM 19 compression-crle-tiffsep1(Yellow).tif
08 06 2010 04 56 PM 19 compression-pack-share-tiffsep1(Yellow).tif
08 06 2010 04 53 PM 19 compression-g4-share-tiffsep1(Yellow).tif
08 06 2010 04 52 PM 19 compression-lzw-share-tiffsep1(Yellow).tif
08 06 2010 04 51 PM 19 compression-default-share-tiffsep1(Yellow).tif
08 06 2010 03 59 PM 19 compression-none-share-tiffsep.Yellow.tif
08 06 2010 03 55 PM 19 share-tiffsep.Yellow.tif
私たちはもうすぐそこにいますが、まだ完全ではありません。トークンの順序をに変更して、日付がの代わりに表示されるようにする必要%I %J %K
が%K %I %J
あり2010 08 06
ます08 06 2010
。また、スペースなしで適切なトークンを作成する場合は、日付と時刻の文字列を取得して、簡単に比較できるようにします。さらに、楽しみのために、をスキップ%O
して矢印に置き換えます。
for /f "usebackq tokens=1-7* delims=/: " %I in (`dir/tc/o-d/s gstmp\*yell*.tif ^
^| findstr 2010`) do echo. %K%I%J%L%M%N ==^> %P
出力が次のように変更されます。
201008060501PM ==> compression-g4-emptypage-tiffsep1(Yellow).tif
201008060500PM ==> compression-lzw-emptypage-tiffsep1(Yellow).tif
201008060457PM ==> compression-g3-tiffsep1(Yellow).tif
201008060457PM ==> compression-crle-tiffsep1(Yellow).tif
201008060456PM ==> compression-pack-share-tiffsep1(Yellow).tif
201008060453PM ==> compression-g4-share-tiffsep1(Yellow).tif
201008060452PM ==> compression-lzw-share-tiffsep1(Yellow).tif
201008060451PM ==> compression-default-share-tiffsep1(Yellow).tif
201008060359PM ==> compression-none-share-tiffsep.Yellow.tif
201008060355PM ==> share-tiffsep.Yellow.tif
これで、最初のフィールドを比較する準備がほぼ整いました。
しかし、これを考慮してください:私は12時間のサイクルで私の時間を取得AM
しPM
ます。したがって、数値で比較するには、PMとAMをそれぞれ数値に置き換えて、との変換が正しい方法で数値でソートされるようにする必要が04:51 AM
あります。04:50 PM
さて、これはどうですか?
for /f "usebackq tokens=1-7* delims=/: " %I in (`dir/tc/o-d/s gstmp\*yell*.tif ^
^| findstr 2010`) do (
if "%K%I%J %N %L%M" GEQ "20100806 PM 0457" (
echo. [ %K-%I-%J %L:%M %N %P. ]
)
)
これにより、削除する必要のあるすべてのファイルが一覧表示され、それぞれの日付も表示されます。実際に削除するには、最後echo. ... %P.
を。に置き換える必要がありdel/p/f/s %P
ます。