如在D盘下有upload文件夹
upload文件夹有很多个文件夹如"cut","ent","digi","pic"……等等
比如我要删除"cut","ent","digi"这几个文件夹中700天前的文件,用于每天执行一次
bat文件怎么写?
您好,您的代码我已测试可以删除,但我当时没说明白,还要请教修改,一,upload文件夹下不止这三个文件夹,有五六十个,而且隔一段时间做专题还得增加,我只能把所有目录都像你代码里一样列进去吗?不能遍历upload下的所有目录?二,upload下的所有目录下还包含文件夹,是自动生成的以月份命名,如“2010-05”和“2010-5”两种格式的文件夹,超期的文件夹我也要删除,三,这个删除是以修改日期还是文件创建日期?麻烦改改谢谢!
追答不就是D:\upload下的所有目录,说那么复杂干吗!
是以修改日期
@echo off
regedit /e "%temp%\bak.reg" "HKEY_CURRENT_USER\Control Panel\International"
::::统一格式化系统日期格式Win2000以上系统通用
>aDate.reg echo REGEDIT4
>>aDate.reg echo.
>>aDate.reg echo [HKEY_CURRENT_USER\Control Panel\International]
>>aDate.reg echo "sShortDate"="yyyy-MM-dd"
>>aDate.reg echo "sDate"="-"
>>aDate.reg echo "sTimeFormat"="HH:mm:ss"
regedit /s aDate.reg&del aDate.reg
>tmp.vbs echo Wscript.echo FormatDateTime(DateAdd("d", -700 ,Date),2)
for /f "delims=" %%i in ('cscript.exe //nologo tmp.vbs') do set tt=%%i& del tmp.vbs
::::还原系统原时间日期格式
regedit /s "%temp%\bak.reg"&del "%temp%\bak.reg"
echo 700天前是 %tt%
set "tt=%tt:/=%"
set "tt=%tt:-=%"
for /f "delims=*" %%z in ('dir/ad/b "D:\upload"') do call :slz %%z
echo 已完成
pause
:slz
if "%~1"=="" goto:eof
setlocal enabledelayedexpansion
for /f "delims=*" %%i in ('dir/s/a-d/b "D:\upload\%~1\*.*"') do (
for /f "delims= " %%a in ("%%~ti") do (
set "tti=%%a"
set "tti=!tti:/=!"
set "tti=!tti:-=!"
if !tti! lss %tt% del /f/a/q "%%i"&&echo 已删除 %%i
))
endlocal
goto:eof