![如何使用 7 zip 在單一指令中傳遞多個檔案進行壓縮?](https://rvso.com/image/1457470/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%207%20zip%20%E5%9C%A8%E5%96%AE%E4%B8%80%E6%8C%87%E4%BB%A4%E4%B8%AD%E5%82%B3%E9%81%9E%E5%A4%9A%E5%80%8B%E6%AA%94%E6%A1%88%E9%80%B2%E8%A1%8C%E5%A3%93%E7%B8%AE%EF%BC%9F.png)
我有一個資料夾,其中包含以下文件:
destiny.txt
destiny1.txt
destiny2.txt
destiny3.txt
destiny4.txt
destiny5.txt
destiny6.txt
destiny7.txt
其中命運1.txt、命運4.txt、命運6.txt來自batch1。
我用來7zip
壓縮檔案。
我可以一步傳遞這 3 個檔案來建立DestinyTest.zip
嗎?
是否可以?
答案1
我可以一步傳遞這 3 個檔案來建立
DestinyTest.zip
嗎?
您可以使用 7zip 的命令列版本,即7z
.
從命令列:
7z a -tzip DestinyTest.zip destiny1.txt destiny4.txt destiny6.txt
a
- 將檔案新增至存檔。-tzip
- 指定存檔的類型(我們正在建立zip
存檔)。
進一步閱讀
答案2
如果您有一個列出要製作 zip 的文件的文件,例如
建立要歸檔的文件列表,每行一個。這是一個 @-list,從 DOS 時代開始,許多程式都會為每一行執行此操作。
您可以使用 建立這樣的文件dir /b destin*.* > zipme.lst
,然後在 ascii 編輯器(記事本或編輯)中刪除行。
type zipme.lst destiny1.txt destiny4.txt destiny6.txt 7za a -tzip DestinyTest.zip @zipme.lst
這將找到 zipme.lst,並添加其中列出的所有檔案。它可以比命令列更長,並且您可以對其進行一些控制。
答案3
我有一個類似的問題,想用批次腳本。具體方法如下:
在下面的範例中,腳本會尋找以“cell_cfg”和“slave_cfg”開頭的所有.csv 文件,收集它們,並將它們壓縮到一個名為“cfg.7z”的檔案中,該檔案儲存在名為“ zip」的子目錄中:
@ECHO OFF
setlocal enableDelayedExpansion
mkdir zip
ECHO collecting filenames...
set filenames="C:\Program Files\7-Zip\7z.exe" a -t7z "zip/cfg.7z
FOR %%i IN (cell_cfg*.csv) DO (
ECHO "%%i" | FIND /I "zip_cfg.bat" 1>NUL) || (
SET filenames=!filenames!" "%%i
)
)
FOR %%i IN (slave_cfg*.csv) DO (
ECHO "%%i" | FIND /I "zip_cfg.bat" 1>NUL) || (
SET filenames=!filenames!" "%%i
)
)
set filenames=%filenames%"
%filenames%
(調整 7z.exe 的路徑和檔案/資料夾名稱。如果您想要 .zip 而不是 .7z,請重新命名這些行:
set filenames="C:\Program Files\7-Zip\7z.exe" a -t7z "zip/cfg.7z
進入
set filenames="C:\Program Files\7-Zip\7z.exe" a -tzip "zip/cfg.zip
)
我將其另存為“zip_cfg.bat”,並將其放入包含我要壓縮的檔案的資料夾中。然後我可以在命令列中調用它:首先,導航到包含文件的資料夾,然後只需調用:
zip_cfg.bat
如果您想要壓縮資料夾(“*”)中的所有文件,“FIND /I "zip_cfg.bat" 1>NUL”部分會阻止腳本壓縮批次檔本身。
希望這對某人有幫助...:)