请参阅下面的更新答案
Windows 批处理文件。
我绝对喜欢 7-Zip 并且工作得很好,但喜欢 WinZip 的移动和时间戳文件的能力。但是,例如,WinZip(命令行界面)对文件大小和存档中的文件数量有限制。
谷歌搜索我们确实看到有一个人确实采用了 7-zip 的代码并重新编译了代码以使用 -m(移动)开关。但是,我对在我们的生产环境中使用 7-zip 开发人员之外的第三方感到不舒服。
另外,我见过 - http://alternativeto.net/software/7-zip/
我已经编码:IF NOT ERRORLEVEL 1(在 Zip 过程之后)删除文件,但如果有多个相同的文件名结构,这不安全。
以下是一些示例代码:7zip:
D:\scripts\7za -tzip -y a D\zips\20140116_someclient_%computername%@%location%.zip D:\logs\apache_log.2014-01-16* >nul >>%logfile%
IF NOT ERRORLEVEL 1 ECHO Y|DEL D:\logs\apache_log.2014-01-16*
apache_log.2014-01-16 可能是:
apache_log.2014-01-16.1
apache_log.2014-01-16.2
apache_log.2014-01-16.3
等等
WinZip
c:\progra~1\WinZip\Wzzip.exe -T -ex -m D\zips\20140116_someclient_%computername%@%location%.zip D:\logs\some_file.2014-01-16* >nul >>%logfile%
我想从软件需求的角度来看,我想在 7Zip 中拥有一些 WinZip 的功能。我喜欢 7Zip,因为它能够处理大型档案。我喜欢 PeaZip,我在很多个月前使用过 PowerArchiver。我遇到的问题是我正在使用适用于 Windows 的 Apache Tomcat,我们必须归档每小时超过 200-300 MB 的日志,并且需要让服务器清除旧日志。
希望这更有意义。
更新:
相信我已经回答了我自己的问题..
FOR /F %%F IN ('dir /B "D:\serverlogs\server.log.2014-01-19*"') DO (
D:\work\scripts\7za.exe –tzip –y a "D:\ziplogs\201401109_COMPANY_SERVERNAME@DATACENTER.ZIP" >> D:\WORK\SCRIPTS\LOGS\LOG_20140120.LOG && DEL "D:\serverlogs\%%F"
)
这现在效果很好。