批处理脚本来识别文件夹和zip&移动它们

时间:2013-07-01 10:27:03

标签: windows for-loop batch-file cmd ziparchive

我是Windows脚本的新手,在Unix shell中花了超过13年的脚本。我需要帮助找到一种方法来找到最近修改约30天的文件夹,然后压缩文件夹并将其移动到另一个“存档”文件夹。文件夹结构如下:

D:\AuditFiles\2013.05
D:\AuditFiles\2013.06
D:\AuditFiles\Archive

所以目标是在压缩之后将2013.05移动到存档目录中。

我试过forfiles.exe,它不允许我跳过文件夹存档,我尝试过dir / ad但是这不允许我特定的最后修改日期是+30。

2 个答案:

答案 0 :(得分:2)

简单的方法,假设您的日期格式为Mo 07/01/2013,请使用命令echo %date%进行检查:

@echo OFF &setlocal
REM %date% format is "Mo 07/01/2013"
FOR /f "tokens=2,4delims=/ "  %%a IN ("%date%") DO SET /a month=%%a, year=%%b
IF %month% equ 1 (
    SET /a month=12
    SET /a year-=1
) ELSE SET /a month-=1
if %month% lss 10 SET "month=0%month%"
SET "folderToSearch=%year%.%month%"
IF NOT EXIST "D:\AuditFiles\%folderToSearch%\" ECHO Folder NOT found: %folderToSearch%&goto:eof
ZIP [put options for your ZIP app here] "D:\AuditFiles\Archive\%folderToSearch%.zip" "D:\AuditFiles\%folderToSearch%"

答案 1 :(得分:1)

这是获取最旧文件夹的一种方法,不包括存档,这似乎是您所需要的。

@echo off
pushd "D:\AuditFiles\"
for /f "delims=" %%a in ('dir /b /ad /o-d') do (
if /i not "%%a"=="Archive" set "folder=%%a"
)
echo oldest folder is "%folder%"
popd