
zip ファイルがあります。この中には、、、というresults.zip
一連の zip ファイルを含む 2 つのフォルダーが含まれています。PASS/test1.zip
FAIL/test2.zip
FAIL/test3.zip
Linux では、これらを数ステップで簡単に解凍できます。
$ unzip results.zip
$ echo FAIL/*.zip PASS/*.zip | xargs -n1 unzip
一部の Windows ユーザーからは、Windows 上ですべてのファイルを解凍するのは面倒だと不満の声が上がっています (メインの zip 内には何十もの zip が入っています)。すべてのファイルの内容を一度に展開できるメカニズムはありますか?
顧客ボックスの中には新しいものもありますが、まだ WinXP を使用しているものも多数あります。
答え1
あげて解凍そして、次のようなバッチスクリプト
unzip results.zip
for %%i in (FAIL\*.zip PASS\*.zip) do unzip %%i
答え2
試す今すぐ抽出私自身はこの機能をテストしていませんが、それを支持すると主張する。
答え3
以下は、7zip がデフォルトの場所にインストールされていることを前提とした Windows の解決策です。
@echo off
Setlocal EnableDelayedExpansion
Set source=%1
Set SELF=%~dpnx0
For %%Z in (!source!) do (
set FILENAME=%%~nxZ
)
set FILENAME=%FILENAME:"=%
"%PROGRAMFILES%\7-zip\7z.exe" x -o* -y "%FILENAME%"
rem DEL "%FILENAME%"
For %%Z in (!source!) do (
set FILENAME=%%~nZ
)
for %%a in (zip rar jar z bz2 gz gzip tgz tar lha iso wim cab rpm deb) do (
forfiles /P ^"%FILENAME%^" /S /M *.%%a /C "cmd /c if @isdir==FALSE \"%SELF%\" @path"
)
ノート:
- ~ 修飾子を使用して変数を変更する唯一の方法は、ダミーの for..in ループを使用することです。より良い方法がある場合は編集してください。
- ~nx は変数を変更して、完全なパス + ファイル名にします。
- ~dpnx も %0 に対して同じことを行います。つまり、スクリプトの完全なパスとファイル名を取得します。
- 7zip コマンド ラインで -o* を使用すると、GUI で右クリックして抽出する場合と同様に、7zip は .zip 拡張子なしでフォルダー名を作成できます。
- ~nは変数を変更して拡張子のないファイル名にします。つまり、.zipを削除します。
- のエスケープ文字 (引用符用) は(キャレット)
FORFILES /P
ですが、 のエスケープ文字は であることに注意してください。これにより、スペースを含むパスとファイル名も問題なく再帰的に処理されます。^
CMD /C
\
- 解凍後に zip ファイルを削除する場合は、DEL ステートメントから REM を削除できます。
答え4
これを見て
http://www.softpedia.com/get/Compression-tools/Multi-Unpacker.shtml
「ネストされたアーカイブの処理 (他のアーカイブにパックされたアーカイブを再帰的に抽出します)。」
OS: Windows 2000 / XP / 2003 / Vista