7z命令列引數中的路徑

2021-09-22 09:37:12 字數 1681 閱讀 2398

最近在自動化的過程中用到了7z命令列工具,發現其引數中的路徑挺有意思的,在此總結一下。本文中所有demo使用的7z版本為:15.14 x64。

下面的命令會把g:\temp\目錄和目錄下的所有檔案打包到壓縮檔案abc.zip中。

7z.exe a abc.zip g:\temp\
注意,此時壓縮包中是包含temp目錄的。

當我們解壓縮abc.zip檔案時就會發生一件比較有趣的事。無論通過右鍵選單中windows提供的」extract all…」還是7z提供的」extract files…」,預設都會給解壓縮的檔案新增一級目錄即abc。

多出的這級目錄可能是我們想要的,可能不是。如果不是,我們可以在上面的ui介面中把它去掉。

或者你可以使用命令列解壓它:

7z.exe x abc.zip –og:\
你能相信嗎,解壓出來的檔案路徑中並沒有abc這級目錄!

由於通過ui解壓縮時缺省會生成一級以壓縮檔案名命名的目錄,為了在解壓後不改變目錄樹的結構。我們可以考慮在壓縮時,只新增根目錄下的所有檔案而不新增根目錄,然後以根目錄的名稱命名壓縮檔案。

7z.exe a g:\temp.zip g:\temp\*
此時,壓縮包中將不包含temp目錄。

這樣,我們通過ui預設解壓出來的檔案路徑和壓縮前是一致的。

但是,如果使用命令列解壓就得手動新增上一級目錄:

7z.exe x g:\temp.zip –og:\temp
接下來讓人意想不到的事情再次發生了,當我們使用相對目錄執行壓縮命令時:

g:\> 7z.exe a g:\temp.zip temp\*
壓縮包中仍然出現了temp目錄。查詢7z的文件後才知道,在這種情況下,要使用相對路徑,需要這樣寫:

g:\> 7z.exe a g:\temp.zip .\temp\*
還有一種情況,就是我們在壓縮乙個目錄時,希望把它的父目錄資訊也儲存到壓縮包裡。注意,壓縮包裡只有父目錄而不包含父目錄中的其他檔案。這時就必須使用相對目錄了:

g:\>7z.exe a g:\temp.zip temp\test\
這樣,壓縮包中檔案的根目錄就是temp了。

當執行壓縮命令時,除了指定目錄外還可以指定乙個或者多個檔案。如果要指定多個檔案/目錄,最好的方法是把這些檔案/目錄的名稱寫到乙個文字檔案中,然後把這個文字檔案作為命令列引數。這個文字檔案就稱為檔案列表,在引數中引用它時需要在檔名前面新增乙個特殊的符號』@』。

g:\>7z.exe a g:\abc.zip –i@g:\list.txt
-i表示list.txt中羅列的檔案和目錄會被新增到壓縮包中。

檔案列表中可以寫檔案的絕對路徑,也可以寫相對路徑。需要注意的是,如果寫相對路徑,是相對於當前工作目錄的路徑,而不是相對於list.txt的路徑。

檔案列表中既可以羅列單個檔案的路徑,也可以羅列目錄的路徑。注意區分相對路徑和絕對路徑,其規則和前文所述相同。

除了包含指定的目錄/檔案,還可以排除指定的目錄/檔案。

g:\>7z.exe a g:\temp.zip g:\temp\ -x@g:\temp\list.txt
-x表示list.txt檔案中列出的檔案和目錄不會新增的壓縮包中。

注意:排除列表中只能使用相對目錄。

7z命令列引數中的路徑

7z命令列引數中的路徑 最近在自動化的過程中用到了7z命令列工具,發現其引數中的路徑挺有意思的,在此總結一下。本文中所有demo使用的7z版本為 15.14 x64。壓縮某個資料夾 下面的命令會把g temp 目錄和目錄下的所有檔案打包到壓縮檔案abc.zip中。7z.exe a abc.zip g...

命令列壓縮解壓7z

命令列壓縮解壓一 7z 1 簡介 7z,全稱7 zip,是一款開源軟體。是目前公認的壓縮比例最大的壓縮解壓軟體。主頁 中文主頁 主要特徵 全新的lzma演算法加大了7z格式的壓縮比 支援格式 壓縮 解壓縮 7z,xz,bzip2,gzip,tar,zip 僅解壓縮 arj,cab,chm,cpio,...

命令列壓縮解壓7z

命令列壓縮解壓一 7z 1 簡介 7z,全稱7 zip,是一款開源軟體。是目前公認的壓縮比例最大的壓縮解壓軟體。主頁 中文主頁 主要特徵 全新的lzma演算法加大了7z格式的壓縮比 支援格式 壓縮 解壓縮 7z,xz,bzip2,gzip,tar,zip 僅解壓縮 arj,cab,chm,cpio,...