
次のようなフォルダ構造を圧縮しようとしています:
Root
|_ Folder
|_Sub Folder 1
|_Files
|_Sub Folder 2
|_Files
|_ *more Sub Folders*
サブフォルダーごとに、サブフォルダー内のファイルを含む .zip ファイルを作成し、サブフォルダーに名前を付ける必要があります。したがって、「フォルダー」内でコマンドを実行すると、サブフォルダーごとに名前が付けられた zip ファイルが作成され、サブフォルダーの内容のみが含まれます (サブフォルダーが単に圧縮されたものではありません)。
Windows で 7-zip を使用してさまざまな for コマンドを試しましたが、うまくいかないようです。
for /d %i in (*) do 7z a -oC:\Temp... %i.zip
これは、フォルダーの内容全体を圧縮し、サブフォルダー名ごとにアーカイブを作成するループを実行します。
ご協力いただければ幸いです。
答え1
最も簡単な方法は、TotalCommander (ghisler のサイトから) をインストールし、必要なサブディレクトリを選択することです (数字キーボードの * を使用するとすべてを切り替えることができます)。コンプレッサーへのショートカットは Alt-F5 です。「選択したファイル/ディレクトリごとに 1 つずつ個別のアーカイブを作成する」をチェックし、必要なコンプレッサーを選択して OK します。
バッチでは以下を使用できます:
@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)\*.*"}