Windows 如何通过批处理脚本删除最旧的日期文件夹?
我有一个包含多个文件夹的目录,这些文件夹的文件名为日期:Windows 如何通过批处理脚本删除最旧的日期文件夹?,windows,batch-file,Windows,Batch File,我有一个包含多个文件夹的目录,这些文件夹的文件名为日期: ... 03-Wed-11 03-Tue-10 03-Mon-09 ... 如何编写删除最旧文件夹的批处理脚本。最好是一个月前的文件夹?通过使用文件名,选择最早的文件名 无法保存包含:和/的文件夹。这就是为什么下面的脚本。我用来创建日期文件夹()的文件: 如果按如下方式回显当前日期:echo%CurrentDate%,它将按如下方式显示:03-Web-11日期是Windows系统日期。尝试以下操作: @echo off SETLOCAL
...
03-Wed-11
03-Tue-10
03-Mon-09
...
如何编写删除最旧文件夹的批处理脚本。最好是一个月前的文件夹?通过使用文件名,选择最早的文件名
无法保存包含:
和/
的文件夹。这就是为什么下面的脚本。我用来创建日期文件夹()的文件:
如果按如下方式回显当前日期:echo%CurrentDate%
,它将按如下方式显示:03-Web-11
日期是Windows系统日期。尝试以下操作:
@echo off
SETLOCAL EnableDelayedExpansion
REM Need not to set the variable currentYear and currentMonth. It will be automatically set by wmic
set currentYear=
set currentMonth=
REM Setting the currentYear and currentMonth...
for /f "skip=1 tokens=1-2 delims= " %%a in ('wmic path Win32_LocalTime Get Month^,Year /Format:table') do (
IF NOT "%%~b"=="" (
set /a currentMonth=%%a
set /a currentYear=%%b
set currentYear=!currentYear:~-2,4!
set currentMonth=!currentMonth:~-2,4!
)
)
REM removing folder that are more than one year
for /D %%a IN (*) do (
set folderName=%%a
set folderYear=!folderName:~-2,9!
if !currentYear! gtr !folderYear! (
rmdir /S /Q !folderName!
echo Deleted !folderName!
)
)
REM removing folder that are more than one month
for /D %%a IN (*) do (
set folderName=%%a
set folderMonth=!folderName:~0,-7!
if !currentMonth! gtr !folderMonth! (
rmdir /S /Q !folderName!
echo Deleted !folderName!
)
)
此代码将帮助您删除上个月的文件夹。例如,如果您在2015年3月在此文件夹上运行此代码:
...
01-Fri-15 //deleted, since it is more than one month
02-Thu-15 //deleted, since it is more than one month
03-Wed-15 //retained, since the batch program runs on March 2015
03-Wed-11 //deleted, since it is earlier than 2015
03-Tue-10 //deleted, since it is earlier than 2015
03-Mon-09 //deleted, since it is earlier than 2015
...
请注意,我使用wmic
获取当前日期,而不是date\t
。这是因为wmic
允许您在不受区域设置影响的情况下获取当前日期
希望有帮助 这些数字代表什么?@Marichyasana这些是日期-月-日名称-日编号。我会发布生成这些数字的代码。我在
set currentYear=
下填写了2015,在set currentMonth=
下填写了march,但是,它删除了所有文件夹,新的还是旧的?也尝试了在set currentMonth=
下键入03,但它仍然删除了其中的所有文件夹?让它开始工作了,通过使用03和实际使用早于一个月的文件夹;)我可以稍微调整一下代码吗?有没有什么方法可以自动设置set currentYear=
和set currentMonth=
它需要是自动的!这个代码是自动的。它将使用wmic
命令自动设置currentYear
和currentMonth
。它将删除任何早于本月的文件夹:)
...
01-Fri-15 //deleted, since it is more than one month
02-Thu-15 //deleted, since it is more than one month
03-Wed-15 //retained, since the batch program runs on March 2015
03-Wed-11 //deleted, since it is earlier than 2015
03-Tue-10 //deleted, since it is earlier than 2015
03-Mon-09 //deleted, since it is earlier than 2015
...