我有一个执行以下操作的脚本:
我运行的脚本如下:
@echo off
rem create temp directory
mkdir C:\temp\%computername%\
rem copy logs older than 1 days
robocopy \\%computername%\logs C:\temp\%computername%\ /s /zb /minage:1
for /d %%x in ("C:\temp\%computername%\*.*") do start "C:\Program Files\7-Zip\7z.exe" /b /low /wait "C:\Program Files\7-Zip\7z.exe" a -tzip "%%x.zip" "%%x\"
rem move 7z files back to log directory
robocopy C:\temp\%computername%\ \\%computername%\Logs *.zip /s /zb /mov
rem delete temp directory
rmdir /S /Q C:\temp\%computername%\
以这种方式执行任务可能会让我遇到问题,因为运行的计算机上的C驱动器可能会在压缩之前首先复制文件时填满。
我想只选择1天以前的文件并在日志文件夹中压缩它们,但无法知道如何执行此操作。
答案 0 :(得分:0)
根据robocopy docs,您可以使用" / l"命令指定仅记录文件,而不是实际复制。这可以为您提供小时过滤"过滤器"您需要的功能,通过返回旧日志文件的UNC路径(并在您的7-zip命令而不是临时本地副本中指定它。)
但请注意,即使直接压缩C驱动器,C驱动器上的空间也可能不足,而不是先在本地复制它们。这只是给你买一些时间。您可能还想考虑添加一些"免费磁盘空间检查"此脚本开头的代码(或作为单独的监控服务),以便在清理时提醒您。
答案 1 :(得分:0)
我通过更改作业来解决C驱动器可能填写的问题,只是压缩与当前日志存在的目录相同的文件中的文件,从而消除了复制文件夹的影响。感谢所有人给予的帮助。