0

バックアップの現在の日付としてフォルダー名を持つバックアップを削除するバッチ ファイルに取り組んでいます。これまでのところすべて順調ですが、保護したいエラーが発生しました。

これが私がこれまでに持っているものです。

バッチファイルの一部

    @ECHO OFF
    :RETRY
    CLS
    d:
    cd\mybackup
    dir /ad /B /o:n > list.txt
    type d:\mybackup\list.txt | find "-"
    ECHO Input year and month to delete and press Enter.
    ECHO i.e. YYYY-MM
    SET "VARIABLE="
    SET /p VARIABLE=
    if not defined VARIABLE echo No date entered?&PAUSE&goto RETRY
    type list.txt|findstr /i /b "%variable%" >nul
    IF ERRORLEVEL 1 echo Invalid date entered&PAUSE&goto RETRY
    for /D %%f in (%VARIABLE%*) do rmdir %%f /s /q
    CLS
    ECHO %variable% Backup removed from disk! ! !
    PAUSE
    GOTO MAIN

テキストファイルからの日付

    2013-07-01
    2013-07-02
    2013-07-03
    2013-07-04
    2013-07-05
    2013-08-09

これまでのところ、ワイルドカードを使用して古いフォルダーを削除する日付を入力するように求められます。日付が入力されていない場合、エラーが返され、再度プロンプトが表示されます。リストされていない日付を入力すると、エラーが返され、再度プロンプトが表示されます。ただし、2013-07 と入力すると、2013-07 を含むすべてのフォルダーが削除されます。2013年に入ると、すべてのフォルダーが削除されます。入力した変数を ####-## として何らかの方法で作成する必要があるため、その形式のみが削除され、入力されたものよりも短くも長くもなりません。

どんな助けでも大歓迎です。

4

1 に答える 1

0

次の例のように、REGEX を使用してテストできますyyyy-mm-dd

echo(%variable%|findstr "^201[0-3]-[0-2][0-9]-[0-3][0-9]$" >nul&& echo date format is good || echo wrong date format
于 2013-08-09T21:08:45.657 に答える