请参阅下面的更新答案
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*
Run Code Online (Sandbox Code Playgroud)
apache_log.2014-01-16可能是:
apache_log.2014-01-16.1
apache_log.2014-01-16.2
apache_log.2014-01-16.3
Run Code Online (Sandbox Code Playgroud)
等等
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%
Run Code Online (Sandbox Code Playgroud)
我想从软件需求的角度来看,我想在7Zip中拥有WinZip的一些功能.我喜欢7Zip,因为它有能力使用大型档案.我喜欢PeaZip,而且我之前使用的是PowerArchiver.我遇到的问题是我正在使用Apache Tomcat for Windows,我们必须存档每小时超过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"
)
Run Code Online (Sandbox Code Playgroud)
这现在运作良好.
我知道我们可以在VBS,PowerShell等中执行此操作.但是,我们不希望使用除了好的批处理脚本之外的其他语言来执行此操作.
已经想出以下几点:
TASKKILL /F /IM "tomcat*"
Run Code Online (Sandbox Code Playgroud)
这将强制终止/停止任何Tomcat的持久实例.此外,这将涵盖Tomcat6.exe,Tomcat6_1.exe,tomcat7.exe等.
我的问题是什么..我们知道我们可以做一个NET START Tomcat6,例如..是否可以:
NET START Tomcat*
Run Code Online (Sandbox Code Playgroud)
?是的,我完全知道如果你在服务器上有多个Tomcat实例,这会失败,因为你必须遍历实例列表.但是,我这样做的原因是因为,我有每月脚本我们必须运行,我试图使批处理脚本更具可移植性.
谢谢.