我正在处理批处理文件,删除文件夹名称作为当前备份日期的备份。一切都很好,但我遇到了一个我想要保护的错误。
这是我到目前为止所拥有的。
批量文件的一部分
@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,它将删除所有文件夹。我需要以某种方式将输入的变量设为#### - ##所以它只会删除该格式,并且不会比输入的更短或更长。
非常感谢任何帮助。
答案 0 :(得分: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