我的文件夹名称如此201601,201501,201602,201603,基本上是yyyymm作为文件夹名称。
考虑到今天的月份,文件夹将是201606.我需要删除比201606年长6个月的所有文件夹。
另外,我不想在修改日期之前删除文件夹,而是检查文件夹名称中的月份和年份,并将其与当前月份的文件夹年份和月份进行比较,如果文件夹超过6个月则删除
答案 0 :(得分:1)
以下是批量执行此操作的方法:
echo off
SET rootdir=C:\Temp
SET yyyy=%date:~10,4%
SET cmm=%date:~4,2%
::calculate name of folder 6 months ago based on current month:
if %cmm%==01 (SET /a yyyy=%yyyy%-1 && SET mm=07)
if %cmm%==02 (SET /a yyyy=%yyyy%-1 && SET mm=08)
if %cmm%==03 (SET /a yyyy=%yyyy%-1 && SET mm=09)
if %cmm%==04 (SET /a yyyy=%yyyy%-1 && SET mm=10)
if %cmm%==05 (SET /a yyyy=%yyyy%-1 && SET mm=11)
if %cmm%==06 (SET /a yyyy=%yyyy%-1 && SET mm=12)
if %cmm%==07 (SET mm=01)
if %cmm%==08 (SET mm=02)
if %cmm%==09 (SET mm=03)
if %cmm%==10 (SET mm=04)
if %cmm%==11 (SET mm=05)
if %cmm%==12 (SET mm=06)
::move to target directory:
pushd %rootdir%
::remove old folders:
for /D %%a in (*) do (
if %%a LSS %yyyy%%mm% (rmdir /s /q %%a)
)
::return to current directory (optional):
popd
但它在PowerShell中更容易:
$rootdir = "C:\Temp\"
$yyyymm = get-date -Date (get-date).AddMonths(-6) -Format "yyyyMM"
Get-ChildItem $rootdir -Directory | Where-Object {$_.Name -lt $yyyymm} | Remove-Item