i have writing a window batch to del the files order than 3 months in some directory, however, there are some problem on :Loop_Folder_Del_Old_Files. I don't know why i cannot assign the last modified date of the files, please help to find out the problem. Below are the source code and program result, thanks!
Source Code
:program_start
@ECHO ON
echo program_start
:Parameter_Settings
set filePath=c:\New Folder
set delPeriod=3
echo %date%
set curYYYY=%date:~10,4%
set curMM=%date:~7,2%
set curDD=%date:~4,2%
:Set_The_Date_Of_3_Months_Ago
set /A curMM=curMM - %delPeriod%
if "%curMM%" LEQ "0" (
set /A curMM="(curMM + 12 - %delPeriod%)%%12"
if %curMM% == 0 (set curMM=12) ELSE (set curMM=%curMM%)
set /A curYYYY=curYYYY - 1
)
set curMM=00%curMM%
set curMM=%curMM:~-2%
set curDate=%curYYYY%%curMM%%curDD%
:Loop_Folder_Del_Old_Files
for %%a IN ("%filePath%\*.*") DO (
set ltdate=%%~ta
set fileDate=%ltdate:~6,4%%ltdate:~3,2%%ltdate:~0,2%
if "%fileDate%" LSS "%curDate%" Del /Q "%%a"
)
:end
echo program end
pause
Result
C:\>echo program_start
program_start
C:\>set filePath=c:\New Folder
C:\>set delPeriod=3
C:\>echo Fri 22/11/2013
Fri 22/11/2013
C:\>set curYYYY=2013
C:\>set curMM=11
C:\>set curDD=22
C:\>set /A curMM=curMM - 3
C:\>if "8" LEQ "0" (
set /A curMM="(curMM + 12 - 3)%12"
if 8 == 0 (set curMM=12 ) ELSE (set curMM=8 )
set /A curYYYY=curYYYY - 1
)
C:\>set curMM=008
C:\>set curMM=08
C:\>set curDate=20130822
C:\>for %a IN ("c:\New Folder*.*") DO (
set ltdate=%~ta
set fileDate=~6,4%ltdate:~3,2%ltdate:~0,2
if "" LSS "20130822" Del /Q "%a"
)
C:\>(
set ltdate=22/11/2013 05:36 PM
set fileDate=~6,4%ltdate:~3,2%ltdate:~0,2
if "" LSS "20130822" Del /Q "c:\New Folder\New Text Document (2).txt"
)
C:\>(
set ltdate=22/11/2013 05:36 PM
set fileDate=~6,4%ltdate:~3,2%ltdate:~0,2
if "" LSS "20130822" Del /Q "c:\New Folder\New Text Document.txt"
)
C:\>echo program end
program end
C:\>pause
Press any key to continue . . .
{}- Magoo