::****************************
::删除某一天之前创建的所有文件::****************************
::输入要删除的年月日
@echo off
set /p iyear="请输入指定的年:"
set /p imonth="请输入指定的月:"
set /p iday="请输入指定的日:"
echo %iyear% %imonth% %iday%
::判断输入的合法性
if %imonth% gtr 12 if %imonth% lss 1 (
echo "月输入不合法!"
exit
)
::简单判断日期输入是否合法,不根据月来计算
if %iday% gtr 31 if %iday% lss 1 (
echo "日输入不合法!"
exit
)
setlocal enabledelayedexpansion
::提取文件日期并作出判断,ELSE 子句必须在 IF 之后出现在同一行上
for /f "usebackq tokens=*" %%i in (`dir /a-d/b/oe`) do (
set date_str=%%~ti
echo !date_str!
set fyear=!date_str:~0,4!
set fmonth=!date_str:~5,2!
set fday=!date_str:~8,2!
echo !fyear! !fmonth! !fday!
if !fyear! lss !iyear! (
del %%i
echo "delete one"
) else (
echo "medelete excuted"
if !fyear! equ !iyear! if !fmonth! lss !imonth! (
del %%i
echo "delete two"
) else (
if !fyear! equ !iyear! if !fmonth! equ !imonth! if !fday! lss !iday! (
del %%i
echo "delete three"
)
)
)
)
心得:写if else嵌套的时候要注意空格,本来准备用goto进行替代,但goto会终止for循环,这个得注意。
网上说用call替代,感觉也不给力~