Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 批处理脚本,用于标识文件夹和zip&;移动它们_Windows_For Loop_Batch File_Cmd_Ziparchive - Fatal编程技术网

Windows 批处理脚本,用于标识文件夹和zip&;移动它们

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,

我是一个完全的windows脚本新手,在Unix shell中花了超过13年的时间编写脚本。我需要帮助找到一种方法,找到一个文件夹上次修改约30天前,然后压缩文件夹,并将其移动到另一个“存档”文件夹。文件夹结构如下所示:

D:\AuditFiles\2013.05 D:\AuditFiles\2013.06 D:\AuditFiles\Archive 所以,我们的目标是在压缩后将
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 try
set”folder=%%a“
。小的输入错误。我尝试了上面的部分,得到的结果是“set folder=2013.06”未被识别为内部或外部命令、可操作程序或批处理文件“set folder=2013.05”不被识别为内部或外部命令、可操作程序或批处理文件。最旧的文件夹是“`@user2538606 try
set”folder=%%a“
。小字体。