У меня есть пакет окон, чтобы упорядочить файлы более чем на 3 месяца в какой-то директории, однако есть некоторые проблемы: Loop_Folder_Del_Old_Files. Я не знаю, почему я не могу назначить последнюю измененную дату файлов, пожалуйста, помогите выяснить проблему. Ниже приведены исходный код и результат программы, спасибо!Windows Bat Del старые файлы
Исходный код
: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
Результат
C: \ > эхо program_start
program_start
C: \ > набор Filepath = C: \ Новая папка
C: \ > множество delPeriod = 3
C: \ > эхо Пт 22/11/2013
Пт 22/11/2013
C: \ > набор curYYYY = 2013
C: \ > множества curMM = 11
C: \ > множество curDD = 22
C: \ > множества/А curMM = curMM - 3
C: \ > если LEQ (
множество/А curMM = " (curMM + 12 - 3)% 12 "
если 8 == 0 (установить curMM = 12) ИНАЧЕ (набор curMM = 8)
комплект/A curYYYY = curYYYY - 1
)
C: \ > множество curMM = 008
C: \ > множества curMM = 08
C: \ > множества CurDate = 20130822
C: \ > для% в IN (" C: \ Новая папка *.* ") DO (
множество ltdate =% ~ та
множество FILEDATE = ~ 6,4% ltdate: ~ 3,2% ltdate: ~ 0,2
если " " LSS Дель/Q "% "
)
C: \ > (
множества ltdate = 22/11/2013 г. 5:36 вечера
множество FILEDATE = ~ 6,4% ltdate: ~ 3,2% ltdate: ~ 0, 2
если " " ЛСС Дель/Q " C: \ Новая папка \ новый текстовый документ (2) .txt "
)
C: \ > (
множество ltdate = 22/11/2013 05:36 PM
набор FILEDATE = ~ 6,4% ltdate: ~ 3,2% ltdate: ~ 0,2
если " " LSS Del/Q " C: \ Новая папка \ New Text document.txt "
)
C: \ > эхо конца программы
конец программы
C: \ > паузы
Нажмите любую клавишу для продолжения. , ,
Можем ли мы использовать PowerShell? Это было бы, ИМХО, легче писать и проще поддерживать в PowerShell. Современные системы Windows уже поставляются с PowerShell. – chwarr
Чтобы форматировать код, просто снимите код и нажмите '{}' – Magoo
Откуда появился HTML? – foxidrive