【发布时间】:2014-03-21 08:56:39
【问题描述】:
我需要运行一个脚本来压缩目录结构中的 2 级文件夹中的所有文件夹。我希望脚本压缩日志文件夹中的所有文件夹,然后删除原始文件夹,从而节省空间负载。为了说明我希望压缩的文件夹,请参见下文:
驱动器位置-->机器名-->logtype-->folders_i_want_to_compress
在文件夹 2 中有日期格式为 yyyymmdd 的文件夹,我希望将这些文件夹压缩为 zip 文件。
我不知道如何创建一个脚本来执行此操作,但我确实在这里找到了一个类似的脚本:7-Zip compress files within a folder then delete files
...看起来像这样:
REM Usage: ZipFilesRecursively.bat "C:\My Files"
for /R "%~f1" %%F in (*) do (
7z a -mx9 "%%~dpnxF.7z" "%%F"
if exist "%%~dpnxF.7z" del "%%F"
)
但这仅适用于文件。我无法解决如何更改它以使其适用于文件夹而不是文件,尽管我相信它的开始将与 /D 开关而不是 /R 一起使用。
由于文件夹的路径部分基于机器名称,因此我需要将其输入到脚本中,因此我计划使用来自另一个批处理文件的调用来运行压缩/删除脚本。
调用脚本如下所示
Call zipdeletetest4 machinename1
Call zipdeletetest4 machinename2
Call zipdeletetest4 machinename3
Call zipdeletetest4 machinename4
有人可以帮忙吗?
【问题讨论】:
-
我最终设法让压缩部分使用...
for /d %%x in ("E:\location\machinename\Logs\*.*") do start "C:\Program Files (x86)\7-Zip\7z.exe" /b /low /wait "C:\Program Files (x86)\7-Zip\7z.exe" a -tzip "%%x.zip" "%%x\"但我无法弄清楚如何删除原始文件夹并保留压缩文件。我尝试了许多不同的线路,但无法使其正常工作。
标签: batch-file compression backup scheduled-tasks 7zip