如何将超过 30 天的文件移动到存档位置并将文件存档在存档位置? [关闭]
Posted
技术标签:
【中文标题】如何将超过 30 天的文件移动到存档位置并将文件存档在存档位置? [关闭]【英文标题】:How to move files older than 30 days to archive location and archive the files in archive location? [closed] 【发布时间】:2016-07-09 07:23:49 【问题描述】:我必须为以下场景编写一个 Windows 批处理脚本:
我在文件夹 D:\Test
中存在 .txt 格式的日志文件。我还有另一个文件夹,名为D:\Test\archive
。
我必须将超过 30 天的文件移动到存档文件夹 D:\Test\archive
,然后我必须使用 WinRAR 将 D:\Test\archiv
中存在的所有文件存档到单个 zip 文件。 p>
我的 zip 文件格式应为 ARCHIVE_SYSDATE
。
【问题讨论】:
【参考方案1】:无需将超过 30 天的文件移动到子文件夹中进行归档。 WinRAR 具有内置选项,可以将超过 x 天/小时/分钟的文件直接移动到存档文件中。
启动WinRAR,点击Help Topics上的Help菜单并选择标签Contents。列表项 Command line mode 带有主页 Command line syntax 以及子项 Commands 和 Switches包含指向所有命令和所有开关的字母列表的链接。
按字母顺序排列的命令列表对您的任务最有用的命令是:
m将文件和文件夹移至存档
从字母开关列表中,对您的任务最有用的开关是:
-ag[format] 使用当前日期和时间生成存档名称-cfg- 忽略默认配置文件和环境变量- ep1 从名称中排除基本文件夹-ibck 在后台运行 WinRAR-m
设置压缩方法 -r- 禁用递归-to 处理早于指定时间的文件-y 在所有查询中假设是 p>
将WinRAR帮助中的所有信息放在一起,使用的命令是:
"%ProgramFiles%\WinRAR\WinRAR.exe" m -agYYYY-MM-DD -cfg- -ep1 -ibck -m5 -r- -to30d -y D:\Test\archive\ARCHIVE_.zip D:\Test\*
注意:开关-y
也禁用所有错误消息的输出。
【讨论】:
【参考方案2】:这应该让你开始。
forfiles /d -30 /c "cmd /c if not @isdir==TRUE echo @file @fdate"
WinRAR 不是 Windows 的一部分。阅读它的帮助。
用你想要的命令 (copy
) 替换 echo
。
见forfiles /?
和copy /?
。如果您指定日期而不是天数,XCopy
也可以在一行中完成。
请参阅我之前使用 Windows Shell 对象对 zip 的回答。 using Windows send-to for creating a one step send to>zip>to email
【讨论】:
以上是关于如何将超过 30 天的文件移动到存档位置并将文件存档在存档位置? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章