佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > 用批處理刪除N天前或指定日期時(shí)間(前后)創(chuàng)建(或修改)的文件

用批處理刪除N天前或指定日期時(shí)間(前后)創(chuàng)建(或修改)的文件

熱門標(biāo)簽:檢查注冊(cè)表項(xiàng) 美圖手機(jī) 網(wǎng)站文章發(fā)布 呼叫中心市場(chǎng)需求 銀行業(yè)務(wù) 智能手機(jī) 服務(wù)器配置 鐵路電話系統(tǒng)

核心代碼:

@echo off
:: by oicu#lsxk.org
:: 15:17 2011-1-13

:: 如果只是刪除指定日期或N天前修改的文件,用forfiles即可
FORFILES /P "C:\測(cè)試目錄" /S /M *.log /D -3 /C "cmd /c if @isdir==FALSE echo del @file"
:: 指定日期(包含)前修改的文件:/D -yyyy/mm/dd

:: 以下是流水賬
:: 使用限制:控制面板里設(shè)定日期格式為中文(中國(guó))
:: 只有dir /tc才能查看到文件創(chuàng)建時(shí)間,默認(rèn)dir都是dir /tw
:: 為了取出創(chuàng)建時(shí)間,只好用兩次for+find,肯定很慢。

cd /d 你的目錄
:: 如果要包含子目錄,用for /r . %%a in (*)

:: 顯示文件修改時(shí)間
for %%a in (*) do echo "%%~ta"
:: 中文格式時(shí)相當(dāng)于
for %%a in (*) do for /f "tokens=1,2* delims= " %%b in (
'dir /tw "%%a" ^| find /i "%%~nxa"'
) do echo "%%b %%c"

:: 刪除某個(gè)時(shí)間后修改過的文件(這個(gè)簡(jiǎn)單)
for %%a in (*) do if "%%~ta" gtr "2008-04-01" echo del "%%a"

:: 這個(gè)才是顯示文件創(chuàng)建時(shí)間
for %%a in (*) do for /f "tokens=1,2* delims= " %%b in (
'dir /tc "%%a" ^| find /i "%%~nxa"'
) do echo "%%b %%c"

:: 刪除某個(gè)時(shí)間之后創(chuàng)建的文件,如果要?jiǎng)h除某個(gè)時(shí)間之前創(chuàng)建的,更改兩
:: 處gtr為lss。除了日期外,增加判斷時(shí)間,可以去掉else段。
for %%a in (*) do for /f "tokens=1,2* delims= " %%b in (
'dir /tc "%%a" ^| find /i "%%~nxa"') do (
  if "%%b" gtr "2010-12-15" (
    echo del "%%a"
  ) else (
    if "%%b" equ "2010-12-15" if "%%c" gtr "14:50" echo del "%%a"
  )
)

:: 用批處理計(jì)算時(shí)間受到系統(tǒng)的日期格式限制,影響到用set取某一字段的值,
:: 批處理計(jì)算時(shí)間方法過于復(fù)雜,要么只用vbs腳本刪除文件,要么用批處理
:: 配合vbs腳本刪除。

:: 取10天之前的日期,取回放入變量OldDate
echo wscript.echo dateadd("d",-10,date)>GetOldDate.vbs
for /f %%a in ('cscript /nologo GetOldDate.vbs') do set OldDate=%%a
echo %OldDate%
del GetOldDate.vbs

:: VBScript里沒有Format函數(shù),Year、Month、Day等函數(shù)取數(shù)值后也要處理小
:: 于10的數(shù)字,只能用下面的方法整理日期格式
echo wscript.echo dateadd("d",-10,date)>GetOldDate.vbs
for /f "tokens=1,2,3* delims=-/. " %%i in ('cscript /nologo GetOldDate.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 OldDate=%y%-%m%-%d%
echo %OldDate%
del GetOldDate.vbs


:: 綜合上文,最后得到我們想要的結(jié)果
:: 刪除10天前創(chuàng)建的舊文件(不含子目錄)
echo wscript.echo dateadd("d",-10,date)>GetOldDate.vbs
for /f "tokens=1,2,3* delims=-/. " %%i in ('cscript /nologo GetOldDate.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 OldDate=%y%-%m%-%d%
del GetOldDate.vbs
for %%a in (*) do for /f "tokens=1,2* delims= " %%b in (
'dir /tc "%%a" ^| find /i "%%~nxa"') do (
  if "%%b" lss "%OldDate%" echo del "%%a"
)

:: 刪除10天前修改的舊文件(不含子目錄)
echo wscript.echo dateadd("d",-10,date)>GetOldDate.vbs
for /f "tokens=1,2,3* delims=-/. " %%i in ('cscript /nologo GetOldDate.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 OldDate=%y%-%m%-%d%
del GetOldDate.vbs
for %%a in (*) do if "%%~ta" lss "%OldDate%" echo del "%%a"


:: 本文全部用echo del代替del,只是顯示要?jiǎng)h除的文件,并不實(shí)際刪除。

pause
goto :eof

您可能感興趣的文章:
  • 用批處理文件自動(dòng)備份文件及文件夾,并自動(dòng)刪除n天前的文件
  • cmd forfiles 從文件夾或樹中選擇要進(jìn)行批處理的文件(方便批量刪除n天前的文件)

標(biāo)簽:新疆 上海 河南 滄州 紅河 沈陽 樂山 長(zhǎng)治

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《用批處理刪除N天前或指定日期時(shí)間(前后)創(chuàng)建(或修改)的文件》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    台安县| 石城县| 名山县| 青河县| 双鸭山市| 红原县| 息烽县| 信阳市| 黄大仙区| 湖州市| 桐乡市| 金塔县| 宝应县| 济阳县| 聊城市| 阿勒泰市| 清涧县| 淮滨县| 道孚县| 卫辉市| 恭城| 西林县| 九台市| 靖西县| 大港区| 汝南县| 平原县| 同仁县| 丽水市| 北宁市| 肃北| 邯郸市| 秦安县| 河源市| 长汀县| 施秉县| 海原县| 科尔| 泗洪县| 穆棱市| 安仁县|