我正在尝试压缩如下文件夹结构:
Root
|_ Folder
|_Sub Folder 1
|_Files
|_Sub Folder 2
|_Files
|_ *more Sub Folders*
我需要为每个子文件夹创建 .zip 文件,其中包含子文件夹中的文件,并且需要以子文件夹命名。因此,如果我在“文件夹”中运行命令,我将获得一个以每个子文件夹命名的 zip 文件,其中仅包含子文件夹的内容(而不是仅压缩的子文件夹)。
我尝试在 Windows 上使用 7-zip 执行各种命令,但似乎无法成功。
for /d %i in (*) do 7z a -oC:\Temp... %i.zip
这只是压缩整个文件夹内容并循环为每个子文件夹名称创建一个存档。
我感谢您提供的任何帮助!
答案1
最简单的方法是安装 TotalCommander(来自 ghisler 的网站),选择所需的子目录(可以使用数字键盘上的 * 切换全部)。Alt-F5 快捷键用于压缩器。选中“创建单独的存档,每个选定的文件/目录一个”,选择所需的压缩器并确定。
在批处理中您可以使用:
@echo off
for /d %%i in (*) do (
echo Compressing %%i
7z a "C:\TEMP\%%i.7z" -r "%%i\*.*"
)
或者在 CMD 行中:
for /d %i in (*) do 7z a "C:\TEMP\%i.7z" -r "%i\*.*"
答案2
您也可以使用 Powershell:
Get-ChildItem -Path "C:\Root\Folder" -Force -Directory -ErrorAction Continue | foreach {Start-Process "C:\Program Files\7-Zip\7z.exe" -ArgumentList "a C:\TEMP\$_.7z -r $($_.FullName)\*.*"}