2013-05-17 93 views
0

我現在有一個似乎無害的要求放在一個.bat文件中,我第一次處理批處理代碼...發現頁面here處理類似的東西,但它需要修改日期作爲參考。批處理文件邏輯根據文件名中的日期刪除文件

在特定文件夾X中,通過解析其文件名來刪除所有早於N天的文件。 其中文件名稱格式爲Name_YYYYMMDD.log

但請注意: 1.不想最後修改日期爲基準(日誌可能已被訪問/被其他程序/應用程序修改) 2.No權限來安裝其他公用事業。

編輯:

  • 的FORFILES命令工作得很清楚這份工作(但唯一的缺點是它takes'modified日期」作爲參考)
  • 通過Aacini下面的腳本工作正常,但調整規範後。
  • 由於附加條件會使整個場景進一步複雜化,我們決定從批處理轉移到Powershell或AutoIT。

謝謝!

+1

你嘗試過這麼遠嗎?請[編輯]您的問題以包含所有相關的代碼。 –

+0

你會回去的最多天數是多少? –

回答

4

下面的批處理文件將文件日期轉換爲Julian日編號,這是一個連續的天數,並用它來知道每個天有多少天。參數中給出了刪除文件的天數。

@echo off 
setlocal EnableDelayedExpansion 

rem Get Julian Day Number of today's date 
rem The assumed format is MM/DD/YYYY, change C-A-B order in accordance with your locale 
for /F "tokens=1-3 delims=/" %%a in ("%date%") do (
    set todayDate=%%c%%a%%b 
) 
call :DateToJDN %todayDate% todayJDN= 

for /F "tokens=1-3 delims=_." %%a in ('dir /B /A-D *.*') do (
    call :DateToJDN %%b fileJDN= 
    set /A daysOld=todayJDN - fileJDN 
    if !daysOld! gtr %1 (
     echo File "%%a_%%b.%%c" is !daysOld! days old 
    ) 
) 
goto :EOF 

:DateToJDN yyyymmdd jdn= 
set yyyymmdd=%1 
set /A yyyy=%yyyymmdd:~0,4%, mm=1%yyyymmdd:~4,2% %% 100, dd=1%yyyymmdd:~6% %% 100 
set /A a=(mm-14)/12, %2=(1461*(yyyy+4800+a))/4+(367*(mm-2-12*a))/12-(3*((yyyy+4900+a)/100))/4+dd-32075 
exit /B 

測試此程序和由期望del "%%a_%%b.%%c"一個改變echo File "%%a_%%b.%%c" ...命令。

參考:http://www.hermetic.ch/cal_stud/jdn.htm#comp

+0

它調整了一些調整後,但需求改變了一次:(並且我們正在從批處理轉移到Powershell/AutoIT。謝謝! –

+0

@ spyky_42:請問你給我點我的答案嗎?也許upvote?謝謝... – Aacini

+0

我會很樂意這樣做,一旦我獲得了最高的投票權 –

0

在這裏你有,它會刪除文件,例如20180105.log在1月5日,它的日期格式爲YYYY-MM-DD,日期格式爲MM/DD/YYYY,日期格式爲 。更改此分隔符= /並檢查「echo todayDate!todayDate!」。操縱A B C

cls 
@echo off 
setlocal EnableDelayedExpansion 

for /F "tokens=1-3 delims=-" %%a in ("%date%") do (
    set todayDate=%%a%%b%%c 
) 

rem echo todayDate !todayDate! 

for /F "tokens=1-3 delims=_." %%a in ('dir /B /A-D *.*') do (

    set /A daysOld=todayDate - "%%a" 

    if !daysOld! EQU 0 (
     echo deleting.. %%a.%%b 
     echo del %%a.%%b 
    ) 
) 

測試它,改變echo del %%a.%%bdel %%a.%%b

相關問題