7z命令列引數中的路徑
最近在自動化的過程中用到了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 temptest
這樣,壓縮包中檔案的根目錄就是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:templist.txt
-x表示list.txt檔案中列出的檔案和目錄不會新增的壓縮包中。
注意:排除列表中只能使用相對目錄。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4550/viewspace-2800958/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Go 接收命令列引數Go命令列
- python 在命令列中選擇檔案路徑的互動程式Python命令列
- main命令列引數輸入AI命令列
- SpringBoot禁用命令列引數Spring Boot命令列
- MySQL登陸命令列引數MySql命令列
- 如何在命令列中指定StreamingPro的寫入路徑命令列
- 如何在 Fedora 30 中設定核心命令列引數命令列
- 命令列引數解析模組argparse的使用命令列
- python獲取命令列引數的程式碼Python命令列
- Java方法04:命令列傳遞引數、可變引數Java命令列
- Go語言命令列程式和他們的引數Go命令列
- Python中最好用的命令列引數解析工具Python命令列
- 使用argparse模組新增命令列引數命令列
- Day18--命令列傳遞引數命令列
- Outlook for Microsoft 365 所有命令列引數ROS命令列
- Python命令列引數解析模組argparsePython命令列
- 解決Python執行命令時路徑空格引發的困擾Python
- jbock:無反射的Java命令列引數解析器反射Java命令列
- Python測試框架pytest命令列引數用法Python框架命令列
- Rust 程式設計,讀取命令列引數Rust程式設計命令列
- windows cmd中檢視某個命令所在的路徑Windows
- Python 處理指令碼的命令列引數(二):使用clickPython指令碼命令列
- Python 處理指令碼的命令列引數(三):使用argparsePython指令碼命令列
- 【C】 33_main 函式與命令列引數AI函式命令列
- Python命令列引數定義及注意事項Python命令列
- Linux 命令列引數的三種風格 Unix/Posix、BSD、GNULinux命令列
- linux的命令列解析引數之getopt_long函式使用Linux命令列函式
- 做ftp專案中使用命令列引數及 ----python 命令列 解析模組 optparseFTP命令列Python
- 另一個go命令列引數處理器 - cmdrGo命令列
- arp命令 引數
- ipconfig命令引數
- tasklist命令 引數
- laravel中whereIn方法中使用SQL作為引數的途徑LaravelSQL
- 1.linux的命令列解析引數之getopt_long函式Linux命令列函式
- subprocess中命令為引數序列和字串的區別字串
- find 命令的引數詳解
- nginx判斷路徑是否含有某個引數做判斷Nginx
- 矩陣中的路徑矩陣