批命令刪除三天前創建的文件

批處理命令

@echo off
SET TT=1
set p1=%date:~0,4%
set p2=%date:~5,2%
set p3=%date:~8,2%
setlocal enabledelayedexpansion
for /l %%a in (1,1,3) do (
for /f "delims=0 tokens=*" %%i in ("!p%%a!") do set p%%a=%%i
)
if %p3% gtr %TT%  goto ppp
:nxt
set/a p2-=1
if %p2% equ 0 set/a p1-=1&&set p2=12
SET/a PN1=%p1%%%4
set PN2=28
if %PN1% EQU 0 set pN2=29
for /f "tokens=%p2%" %%i in ("31 %pN2% 31 30 31 30 31 31 30 31 30 31") do set/a p3=%p3%+%%i
if %p3% leq %tt% goto nxt
:ppp
set/a p3=%p3%-%tt%
set p2=0%p2%
set p2=%p2:~-2,2%
set p3=0%p3%
set p3=%p3:~-2,2%
for /r "f:/" %%i in (*.*) do set t=%%~ti &&call :loop "%%~fi"
pause
goto :eof
:loop
if not "%~1" == "%~f0" (
IF %p1%%p2%%p3% gtr %t:~0,4%%t:~5,2%%t:~8,2% del %1
)

 

windows2003系統可以調用一個默認文件 c:/WINDOWS/system32/forfiles.exe來處理。

C:/test>forfiles /?

FORFILES [/P pathname] [/M searchmask] [/S]
         [/C command] [/D [+ | -] {yyyy-MM-dd | dd}]

如下:

forfiles /P C:/test /D -3 /C "cmd /c del @file"

 

其它:

 FORFILES /?
 FORFILES
 FORFILES /P C:/WINDOWS /S /M DNS*.*
 FORFILES /S /M *.txt /C "cmd /c type @file | more"
 FORFILES /P C:/ /S /M *.bat
 FORFILES /D -30 /M *.exe
          /C "cmd /c echo @path 0x09 在 30 前就被更改。"
 FORFILES /D 2001-01-01
          /C "cmd /c echo @fname 在 2001年1月1日就是新的。"
 FORFILES /D +2010-6-29 /C "cmd /c echo @fname 今天是新的。"
 FORFILES /M *.exe /D +1
 FORFILES /S /M *.doc /C "cmd /c echo @fsize"
 FORFILES /M *.txt /C "cmd /c if @isdir==FALSE notepad.exe @file"

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章