Windows 批处理脚本,用于标识文件夹和zip&;移动它们
我是一个完全的windows脚本新手,在Unix shell中花了超过13年的时间编写脚本。我需要帮助找到一种方法,找到一个文件夹上次修改约30天前,然后压缩文件夹,并将其移动到另一个“存档”文件夹。文件夹结构如下所示: D:\AuditFiles\2013.05 D:\AuditFiles\2013.06 D:\AuditFiles\Archive 所以,我们的目标是在压缩后将Windows 批处理脚本,用于标识文件夹和zip&;移动它们,windows,for-loop,batch-file,cmd,ziparchive,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,
2013.05
移动到归档目录中。我尝试过forfiles.exe,它不允许我跳过文件夹存档,我尝试过dir/ad,但它不允许我指定最近修改的天数为+30。这是一种获取最旧文件夹的方法,不包括存档,这似乎是您需要的
@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
这是一种获取最旧文件夹(不包括存档)的方法,这似乎是您所需要的
@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年7月1日,请使用命令
echo%date%
:
@echo OFF&setlocal
REM%日期%格式为“Mo 07/01/2013”
对于/f“代币=2,4delims=/”(“%date%”)中的%%a,请设置/a月=%%a,年=%%b
如果%1月份%1相等(
设置/一个月=12
设置/年-=1
)其他设置/一个月-=1
如果%month%lss 10设置为“month=0%month%”
设置“folderToSearch=%year%。%month%”
如果不存在“D:\AuditFiles\%folderToSearch%\”未找到回显文件夹:%folderToSearch%&goto:eof
ZIP[在此处放置ZIP应用程序的选项]“D:\AuditFiles\Archive\%folderToSearch%.ZIP”“D:\AuditFiles\%folderToSearch%”
简单的方法是,假设您的日期格式为2013年7月1日,请使用命令echo%date%
检查这一点:
@echo OFF&setlocal
REM%日期%格式为“Mo 07/01/2013”
对于/f“代币=2,4delims=/”(“%date%”)中的%%a,请设置/a月=%%a,年=%%b
如果%1月份%1相等(
设置/一个月=12
设置/年-=1
)其他设置/一个月-=1
如果%month%lss 10设置为“month=0%month%”
设置“folderToSearch=%year%。%month%”
如果不存在“D:\AuditFiles\%folderToSearch%\”未找到回显文件夹:%folderToSearch%&goto:eof
ZIP[在此处放置ZIP应用程序的选项]“D:\AuditFiles\Archive\%folderToSearch%.ZIP”“D:\AuditFiles\%folderToSearch%”
如果您不想使用PowerShell、VBScript或一些真正的编程语言(Perl、Python等),我会使用GNU find()。这比任何本机Windows功能都要好。不幸的是,我不允许安装任何UTIL。我需要为它编写脚本,以便它可以用作每个月第一个月运行的计划作业。如果您不想使用PowerShell、VBScript或某些真正的编程语言(Perl、Python等),可能需要为/r编写for
,我会使用GNU find()。这比任何本机Windows功能都要好。不幸的是,我不允许安装任何UTIL。我需要编写脚本,这样它就可以作为计划作业在每个月的第一天运行。这似乎不能解决除存档之外最旧目录的状况。如果这个脚本段可以包含最旧的目录位,那就太好了。因此,采用@foxidrive的解决方案。这个除存档之外的最旧目录对我来说太混乱了:)这似乎没有解决除存档之外的最旧目录的状况。如果这个脚本段可以包含最旧的目录位,那就太好了。因此,采用@foxidrive的解决方案。这个除存档之外最旧的目录在本周初对我来说太混乱了:)我尝试了上面的部分,我得到了“set folder=2013.06”不被识别为内部或外部命令、可操作程序或批处理文件“set folder=2013.05”不被识别为内部或外部命令、可操作程序或批处理文件。最旧的文件夹是“`@user2538606 tryset”folder=%%a“
。小的输入错误。我尝试了上面的部分,得到的结果是“set folder=2013.06”未被识别为内部或外部命令、可操作程序或批处理文件“set folder=2013.05”不被识别为内部或外部命令、可操作程序或批处理文件。最旧的文件夹是“`@user2538606 tryset”folder=%%a“
。小字体。