0

我是 Windows 脚本的新手,在 Unix shell 中编写脚本已经超过 13 年。我需要帮助才能找到大约 30 天前最后修改的文件夹,然后压缩文件夹并将其移动到另一个“存档”文件夹。文件夹结构如下:

D:\AuditFiles\2013.05
D:\AuditFiles\2013.06
D:\AuditFiles\存档

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

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

4

2 回答 2

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%"
于 2013-07-01T13:13:09.103 回答
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
于 2013-07-01T13:10:05.157 回答