
我有一個 zip 檔案results.zip
。它包含兩個資料夾,其中包含一堆 zip 檔案 - 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
這是 Windows 的解決方案,假設 7zip 安裝在預設位置。
@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* 允許 7zip 建立不帶 .zip 副檔名的資料夾名稱,就像在 gui 中右鍵單擊解壓縮時一樣。
- ~n 修改變數以使其成為不含副檔名的檔名。即刪除 .zip
FORFILES /P
請注意, is (插入符號) 中的轉義字元(用於引號),^
而CMD /C
it is中的轉義字元\
。這確保它也可以遞歸地處理帶有空格的路徑和檔案名稱而不會出現任何問題。- 如果您希望解壓縮後刪除 zip 文件,可以從 DEL 語句中刪除 REM。
答案4
看到這個
http://www.softpedia.com/get/Compression-tools/Multi-Unpacker.shtml
“嵌套存檔處理(遞歸提取打包在其他存檔中的存檔)。”
作業系統:Windows 2K / XP / 2003 / Vista