1. bat腳本刪除5天之前的文件
bat腳本:批處理文件,在DOS和Windows(任意)系統中,.bat文件是可執行文件,由一系列命令構成,其中可以包含對其他程序的調用。這個文件的每一行都是一條DOS命令(大部分時候就好像我們在DOS提示符下執行的命令行一樣),你可以使用DOS下的Edit或者Windows的記事本(notepad)等任何文本文件編輯工具創建和修改批處理文件。
@echo off
::在d:\測試文件夾中刪除5天前以日期為主名的txt文件
cd/d "d:\測試文件夾"
set/a n=5
set/a y=%date:~,4%,m=1%date:~5,2%-100,d=1%date:~8,2%-100
set/a d-=n
if %d% gtr 0 goto :ok
:ov
set/a "md=31-!(m-5)-!(m-7)-!(m-10)-!(m-12)-!(m-3)*(3-!(y&3))"
set/a d+=md,m-=1
if %m% equ 0 set/a m=12,y-=1
if %d% leq 0 goto :ov
:ok
set/a md=m*100+d+10000
set "ymd=%y%%md:~1%"
echo %n% 天前日期為%ymd%
set "s=20[0-9][0-9][0-1][0-9][0-3][0-9]"
for /f "delims=" %%i in (
'dir/b^|findstr/ix "%s%\.txt"') do (
if "%%~ni" leq "%ymd%" (del %%i&&echo %%i)
)
pause
2. 請問:如何批處理刪除文件夾及其所有子文件夾下N天前所有文件
當文件夾裡面的某一個文件當前時間被修改過,這個文件夾的修改時間就會變成當前時間.
以刪除30天以前的文件夾為例.如果一個文件夾的最後時間都是30天以前.
那麼在30天以內該文件夾下的所有文件都沒有被修改過.
而一個文件夾如果不在30天以前,那麼也可能文件夾下的某些文件是在30天以前的.
根據這個思路.先刪除30天以前的文件夾.
再刪除30天以內文件夾下所有30天以前的文件.
那麼就結果就如下:
forfiles -D -30 /M * /C "cmd /c rd @file /s /q"
forfiles -D -30 /S /M * /C "cmd /c del @path /s /q"
兩行批處理即可搞定
3. bat 批處理程序刪除文件夾,刪除兩天前的文件夾和文件
保存為bat文件運行,這是刪除e:\111文件夾下的2天前的rar文件. 可根據自己的要求修改
@echo off&setlocal EnableDelayedExpansion
::取2天之前的日期.set _tian=2下面這句中的2代表天數.
set "_tian=2"
>tmptmp.vbs echo wscript.echo dateadd("d",-%_tian%,date)
for /f "tokens=1,2,3* delims=-" %%i in ('cscript /nologo tmptmp.vbs') do (
set "y=%%i"&set "m=%%j"&set "d=%%k"
)
if %m% LSS 10 set "m=0%m%"
if %d% LSS 10 set "d=0%d%"
set "rq=%y%-%m%-%d%"
echo.&echo 注意:即將刪除 %rq% 以前建立的文件
::判斷文件
for /f "delims=" %%a in ('dir/b/a-d e:\111\*.rar') do (
set "a=0"
for /f "skip=4 delims=" %%b in ('dir/tc "e:\111\%%a"') do (
set /a "a+=1"
if !a! equ 1 (
set "var=%%b"
for /f "tokens=1 delims= " %%c in ("!var!") do set "str=%%c"
if !str! lss !rq! del /q "e:\111\%%a"
)))
del/q temtem.vbs
pause