使用 robocopy 和 7zip 移动大量文件

使用 robocopy 和 7zip 移动大量文件

在 StackOverflow 和其他一些地方的帮助下,我创建了以下脚本,目的是查看文件夹及其子目录,如果文件超过 32 天 -> 将它们移动到另一个文件夹并压缩该文件夹。如果压缩文件夹超过 366 天,则将其删除。

我相信这个脚本在只有几百个文件的小规模上运行良好,但我面临的问题是这些目录中现在有 12 个月的数据需要分析。大约有 8 个文件夹,每个文件夹平均有 500,000 个文件,大小都在 1kb - 2kb 左右。

此外,我预计会出现一个问题,即过去 12 个月的所有文件都将被添加到同一个档案中,而不是每个日期的单独档案中。

我有什么办法可以优化这一点?我知道我可能做错了。

脚本如下:

@echo off
if not exist c:\7za920\7za.exe goto end
SET LOGS=C:\logs
SET TEMP=C:\temp
SET ARCHIVE=C:\archive
SET DELETEDARCHIVE=C:\deletedarchive
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b)
For /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set mytime=%%a%%b)
ROBOCOPY %LOGS% %TEMP% /move /minage:32 /MT:32
for  %%X in (%TEMP%\*.*) do "c:\7za920\7za.exe" a -tzip "%ARCHIVE%\%mydate%_%mytime%_ARCHIVE.zip" "%%X"
ROBOCOPY %ARCHIVE% %DELETEDARCHIVE% /move /minage:366
del %DELETEDARCHIVE% /q

答案1

我写了个跟你一样的脚本,但是我直接使用 7zip 移动命令将其移动到以当天命名的 zip 中。

因此它会计算天数减去 30,并获取当天的所有对应文件。您可以根据需要修改 vbs 以获取过去 12 个月的所有天数。

将其放到那里(输出到 IE 只是脚本中的一个奖励);https://gallery.technet.microsoft.com/Archiving-VBS-script-with-b0f21ddc

我将它与一些工业领域的安全摄像头一起使用,它们在文件夹中保存了大量 .jpg 文件,文件数量和你一样大。

相关内容