Double Commander可以像處理簡單資料夾一樣處理壓縮檔案。
例如,如果我們在面板中有一個ZIP檔案,我們可以簡單地選擇它,按Enter鍵,面板將顯示ZIP的內容,就像我們切換到一個目錄一樣。
Double Commander非常靈活,可以通過自己的界面使用外部程序來處理壓縮檔案。它使用兩種不同的原理來處理壓縮檔案:
當我們嘗試打開一個歸檔檔案時,Double Commander首先檢查可用的打包器插件列表。
一旦進入壓縮檔案內部,我們可以執行一些基本功能,如查看檔案、將其複製到另一個面板以及一些有限的功能。
下面的圖片顯示了一個示例,我們選擇了壓縮檔案"help.rar",然後按Enter鍵,就像它是一個目錄一樣:
調用查看(F3)或編輯(F4)命令後,Double Commander會將游標下的檔案提取到臨時檔案的系統目錄中並打開它。關閉查看器後,臨時檔案將被刪除。如果編輯器中打開的檔案被更改,Double Commander將提供重新打包(如果壓縮檔案格式和打包器插件或外部歸檔工具支持此功能)。
使用雙擊或按Enter鍵時,Double Commander將顯示打包檔案的屬性窗口:
打包器行顯示使用的打包器插件名稱或外部歸檔工具的名稱。
按鈕:
關閉 – 將關閉屬性窗口。
解壓並執行 – Double Commander會將游標下的檔案提取到臨時檔案的系統目錄中,並調用內部或系統檔案關聯中的默認操作。
全部解壓並執行 – 與前一個類似,但首先會提取歸檔的全部內容。
Double Commander允許配置檔案在關聯程序中自動打開,使用<AutoExtractOpenMask>。
關閉時,Double Commander會刪除所有臨時檔案。
我們可以配置Double Commander使用外部"打包器插件"檔案來處理壓縮歸檔。
從安裝開始,Double Commander已經包含了一些這些.WCX插件檔案。
此外,網上還有一些其他的插件。我們可以搜索.WCX插件。
還請記住,為Total Commander製作的插件基本上也可以在Double Commander中使用。
要安裝、啟用或配置它們,我們需要訪問配置 > 選項... > 插件 > 插件WCX:
請注意,某些格式是隻讀的,意味著只能查看內容、解壓和測試。
有時我們想要使用的歸檔檔案類型的插件不存在。
或者出於任何原因,有時我們可能明確希望使用外部打包器來利用插件中沒有的特性和功能。
Double Commander使用類似於Total Commander的MultiArc插件的工作原理來處理外部歸檔工具。
簡而言之,使用外部歸檔工具可以總結為:這是一種啟動我們熟悉的歸檔工具的方法,但由Double Commander驅動,通過向歸檔工具可執行檔案提供各種參數,使其像集成到應用程序中一樣。
本頁面的其餘部分將討論這個問題:如何配置Double Commander來啟動外部歸檔工具以執行我們需要的操作。
假設我們想使用"rar.exe"來處理.rar歸檔。
正如我們猜測的那樣,基本的東西是我們需要配置如何調用外部歸檔工具來能夠...
這將通過配置選項歸檔工具來完成,如下圖所示:
所有設置都存儲在multiarc.ini檔案中。
在接下來的部分中,我們將看到Double Commander為我們提供的各種可能性,以正確集成外部打包器的使用。
我們不會在這裡描述每個欄位,因為一旦開始,就會非常直觀,但我們會花時間詳細描述一個集成示例。
我們將描述"rar.exe"外部歸檔工具的集成。沒有什麼比完整的逐步示例更好的了。
我們點擊底部的"添加"按鈕,給歸檔工具起一個有意義的名稱,然後就可以配置它了。
然後我們需要為歸檔工具指定一個有意義的描述,歸檔工具可執行檔案的確切位置,然後將與該歸檔工具關聯的檔案擴展名(不帶句點)。
如果我們有多個擴展名,只需用單個逗號分隔它們,不要加空格。
注意:Double Commander支持雙重擴展名(例如,"tar.gz"、"tar.xz"等),它們必須放在擴展名列表的開頭(即"tar.gz"在"gz"之前)。
如前所述,我們需要配置如何調用外部歸檔工具可執行檔案來執行我們想要的操作。
為了幫助我們做到這一點,Double Commander為我們提供了許多專用變量,用於填充我們可以配置的各種操作的配置字符串。
下表顯示了可以使用的變量以及它們將被替換的內容:
命令定義 | |
---|---|
變量表達式 | 含義 |
%P | 歸檔工具的長名稱(如"Archiver"鍵中所示) |
%p | 歸檔工具的短名稱(如"Archiver"鍵中所示) |
%A | 歸檔檔案的長名稱 |
%a | 歸檔檔案的短名稱 |
%L | 檔案列表名稱。 檔案列表是包含要由外部歸檔工具處理的檔案名稱的檔案。 檔案名是長的。 |
%l | 包含短檔案名的檔案列表 |
%F | 要處理的單個檔案的名稱。 歸檔工具將被執行多次,直到所有檔案名都被處理完畢。 此變量應僅在目標歸檔工具不支持命令行上的檔案列表時使用。 |
%V | 卷大小(用於多卷歸檔) |
%W | 密碼 |
%E<errorlevel> | 可接受的最大命令錯誤級別。 例如, %E2 表示錯誤級別0、1和2都是可接受的。此變量可以在命令的任何位置指定。 如果不存在,只有錯誤級別0被視為成功。 |
%O<modifier> | 默認情況下,Double Commander將歸檔工具輸出從OEM編碼轉換為UTF-8。 使用此選項可覆蓋編碼。請參見下面可能的編碼修飾符。 只能與"列表"操作一起使用。 |
%R | 歸檔中的目標子目錄 |
{} | 如果某些變量包含在大括號中 - 只有當該變量包含非空內容時才會添加 |
%S | 該變量指定可以在檔案打包對話框中添加的附加命令行參數的位置 |
不用擔心,我們稍後會給出示例以更好地理解。
這些修飾符可以在變量之後立即指定,無需空格。
變量修飾符 | |
---|---|
修飾符字母 | 含義 |
F | 在檔案列表中僅包含檔案(可與%L 和%l 變量一起使用) |
Q | 用引號括起包含空格的名稱 |
q | 用引號括起所有名稱 |
W | 僅使用名稱,不包含路徑 |
P | 僅使用路徑,不包含名稱 |
A | 在Windows中使用ANSI系統編碼或在類Unix系統中使用默認系統編碼(在GNU/Linux發行版中通常是UTF-8);可與%L 和%O 變量一起使用 |
U | 使用UTF-8編碼;可與%L 和%O 變量一起使用 |
再次不用擔心,我們稍後會給出示例。
如果我們希望Double Commander像處理目錄一樣處理壓縮歸檔檔案,我們需要能夠獲取歸檔中包含的檔案列表。
此時,我們不需要解壓縮!不,這只是列出其中包含的內容,以便Double Commander向我們顯示內容。
在我們的"rar.exe"示例中,如果我們查看其文檔,有一個"v"命令允許我們讓控制台應用程序"rar.exe"輸出歸檔中的檔案列表:
因此,按照應用程序的用法,要獲取歸檔中包含的內容列表,我們需要使用"v"命令調用"rar.exe",然後是歸檔名稱。
讓我們首先手動測試,嘗試顯示檔案"E:\Temp\just.rar"的內容
所以我們現在需要做的是配置"列表"來告訴Double Commander如何調用"rar.exe"以獲取壓縮歸檔的內容。
為此,我們將重寫剛才所做的相同內容,但使用前面提到的變量和變量修飾符。
下面是它的樣子:
我們寫了%P v %AQ
,使用了前面提到的變量和變量修飾符。
所以這一切都是為了用適當的參數調用外部歸檔工具。
當我們使用內部命令cm_OpenArchive時將使用此功能。
關於"使用不帶擴展名的歸檔名稱作為列表"選項的一些說明:此選項適用於只能包含一個檔案且檔案名等於不帶擴展名的歸檔名稱的歸檔(Bzip2、XZ等)。這類壓縮檔案通常不包含原始檔案的名稱。
到目前為止,我們所做的將使歸檔工具輸出歸檔檔案中的檔案列表。
但這還不是全部!我們需要恢復這個輸出數據並在面板中顯示。
所以我們需要Double Commander解釋歸檔工具命令將輸出的這個輸出表。
正如我們在之前的截圖中看到的,"rar.exe"的輸出內容不僅僅是原始數據。
有一些煩人的信息需要消除,只保留實際的檔案列表。
幸運的是,我們可以配置一個魔法字符串,這樣Double Commander會在開始解析下一行之前等待看到該字符串。
此外,我們還可以配置停止解析的魔法字符串。
由於在前後都有虛線,很容易用虛線設置這兩個參數:
如果外部歸檔會立即輸出原始數據而沒有額外的行,只需將兩個欄位留空。
插入符號("^")表示魔法字符串必須絕對在行的開頭,前面不包含任何內容。否則,文本可以位於行的任何位置。
如果不可能確定它從行開始,例如如果外部歸檔工具在行開頭顯示日期和時間,然後是常量字符串,我們將把魔法字符串設置為常量字符串,但我們不會添加插入符號,這指示Double Commander該字符串可以在任何位置搜索。
如果"列表結束"字符串可能與檔案名混淆,可能會過早停止處理歸檔內容。
這就是為什麼,如果可能的話,最好指定字符串必須從行開始。
此外,如果有一種方法可以將"列表結束"字符串設置得盡可能長,同時保持常量,那就更好更安全,可以確保將來不會發生混淆。
現在Double Commander知道要解析哪些數據以獲取歸檔檔案的檔案列表。
編寫一個例程來解析"RAR"輸出以獲取檔案列表會很容易。
但Double Commander不這樣做。
相反,它通過給我們自己配置解析表的方式提供了極大的靈活性!
這可能比什麼都不做更復雜一些,但另一方面,它給了我們最大的靈活性,使我們能夠使用Double Commander開發人員甚至不知道的外部歸檔!
為了幫助我們解析歸檔工具生成的輸出表,我們將有各種用字母表示的表達式。
下表給出了用於解析外部歸檔生成的內容列表的"標準語法"。
正如我們將從下一個示例中看到的,"標準語法"基本上基於比"高級語法"更直接的替換。
如果可能,我們將嘗試使用該語法,因為它比接下來的"高級語法"解析結果更快。
標準語法解析 | |
---|---|
表達式 | 含義 |
n | 檔案名 |
z | 未壓縮大小 |
c | 檔案描述 |
p | 壓縮大小 |
d | 日 |
t | 月 |
TTT | 三字母月份名稱(Jan, Feb, Mar, ...) |
y | 年 |
h | 小時 |
H | 小時修飾符字母(a – 上午時間,p – 下午時間) |
m | 分鐘 |
s | 秒 |
a | 屬性 |
e | 檔案擴展名 |
? | 跳過一個符號 |
* | 跳過直到第一個空格或行尾 |
+ | 對於行尾的名稱欄位:使用直到行尾的所有字符 |
如果歸檔工具使用多行顯示每個檔案的信息,我們必須指定相應數量的行來解析內容(Double Commander支持最多50行)。
這裡的關鍵是使用上表中的表達式來編寫"列表格式"字符串,該字符串將配置Double Commander以處理外部歸檔,從而能夠獲取歸檔的內容,包括目錄和檔案名、檔案大小、屬性、檔案日期等。
我們首先猜測的方法是在記事本等程序中寫一行文本,表示我們之前手動創建的檔案,然後在下面寫出適合的表達式。
以下是示例:
正如我們所見,我們寫了解析表達式字母,與外部歸檔輸出的內容在歸檔中的位置完全匹配:
我們還需要排除行開頭的4個空格,用"????"替換。
如此配置後,如果我們在面板中選擇之前的"just.rar"歸檔,按Enter鍵進入其中,就像它是一個目錄一樣,我們會看到檔案內容顯示我們的做法基本上是有效的(如果我們忽略最後一個檔案...):
下表給出了用於解析外部歸檔生成的內容列表的"高級語法"。
這種語法的元素比上表中的元素處理時間稍長。
所以只有在無法用前一種方法解決有問題的情況時才使用它們。
下一節將給出使用示例。
高級語法解析 | |
---|---|
表達式 | 含義 |
+ | 對於不在行尾的名稱欄位:使用直到下一個空格的所有字符 |
+ | 在任何數字欄位後:使用直到第一個非數字字符的所有數字 |
n+ | 使用直到行尾的所有字符作為檔案名 |
z+ | 使用直到第一個非數字字符的所有數字作為未壓縮大小 |
p+ | 使用直到第一個非數字字符的所有數字作為壓縮大小 |
$ | 跳過所有空格/製表符直到下一個字符或行尾 |
\ | 數據延續到下一行(最多支持2行) |
x | 正好1個空格;如果在此位置有不同字符,則忽略整行 |
z=1024 | 未壓縮大小乘以給定值(這裡是:1024) |
p=1024 | 壓縮大小乘以給定值(這裡是:1024) |
"標準語法"的示例是一個很好的猜測,但它並不完美。
有些情況下它不能正確工作。
對於大檔案,檔案大小比預期的更寬,所以我們第一次嘗試列表會失敗。
看我們的檔案007 Skyfall.TS
。
我們可以看到它沒有顯示適當的信息。讓我們比較一下:
所以我們看到檔案名、檔案大小、日期等信息是不正確的。
讓我們使用"高級語法"的元素來解決這個有問題的情況。
以下是使其工作的方法,即使輸出欄位不總是*完全*相同的寬度:
這有點複雜,但很容易描述,最終我們會看到生成它並不那麼複雜。
下面是彩色描述,幫助我們可視化每個小塊的解析:
所以使用這個"列表格式"字符串,我們現在可以再次測試,得到正確的結果,即使是大檔案:
使用前面提到的變量和變量修飾符,這是配置如何調用外部歸檔工具來"解壓"選定歸檔中的檔案或所有檔案的行。
繼續我們的"rar.exe"示例,從其文檔中我們知道使用"e"命令表示我們想要解壓檔案或一組檔案。
使用"rar.exe",我們還可以在參數中提供要解壓的檔案列表。
因此,我們將利用Double Commander提供給我們的%L
變量,該變量將創建一個文本檔案,其中包含從活動面板中選擇的每個要解壓的檔案,並將這個單一的列表檔案作為參數傳遞。
以下是我們用"rar.exe"配置解壓的行:
此示例的描述是:
當我們選擇歸檔來解壓整個內容、單個檔案等時,將調用此命令。
我們可能沒有意識到,但當我們"進入"歸檔就像它是一個目錄一樣,我們按F3查看歸檔中檔案的內容時,這個"解壓"操作將在後台進行。選定的檔案將使用該模式提取到臨時檔案的系統目錄中,然後我們將使用F3調用的查看器查看該臨時檔案。
當我們使用內部命令cm_ExtractFiles時將使用此功能。
使用前面提到的變量和變量修飾符,這是配置如何調用外部歸檔工具來"打包"檔案或將所有檔案添加到選定歸檔的行。
繼續我們的"rar.exe"示例,從其文檔中我們知道使用"a"命令表示我們想要創建歸檔或將檔案或一組檔案添加到現有歸檔。
使用"rar.exe",我們還可以在參數中提供要添加的檔案列表。
因此,我們將利用Double Commander提供給我們的%L
變量,該變量將創建一個文本檔案,其中包含從活動面板中選擇的每個要添加到歸檔的檔案,並將這個單一的列表檔案作為參數傳遞。
以下是我們用"rar.exe"配置歸檔創建或添加的行:
此示例的描述是:
當我們選擇一個或一組檔案並請求使用"RAR"外部歸檔工具打包它們時,將調用此命令。
當我們使用內部命令cm_PackFiles時將使用此功能。
某些類型的壓縮檔案格式支持直接刪除壓縮檔案內部檔案的可能性。
如果支持此功能,我們可以配置Double Commander以指示如何調用外部歸檔工具來執行此操作。
使用此命令的典型情況是當我們進入歸檔,在其中選擇一個檔案並點擊刪除它時。
如果配置了此"刪除操作",則將用於該操作。
請注意,此操作在外部歸檔配置的第二個選項卡上。
繼續我們的"rar.exe"示例,以下是配置此操作的方法:
此示例的描述是:
一些歸檔工具允許驗證歸檔檔案的完整性,以確保其中沒有錯誤,確保沒有損壞。
如果支持此功能,我們可以配置Double Commander以指示如何調用外部歸檔工具來執行此操作。
繼續我們的"rar.exe"示例,以下是配置此操作的方法:
此示例的描述是:
當我們使用內部命令cm_TestArchive時將使用此功能。
如果沒有錯誤,測試窗口將關閉。如果有錯誤,將出現如下消息:
默認情況下,當我們調用內部命令cm_ExtractFiles來解壓歸檔時,如果其中的檔案按特定目錄結構排列,歸檔工具將在解壓檔案時重新創建相同的結構。
但是,當歸檔工具支持時,有時解壓所有檔案到同一位置而不重新創建目錄結構是合適的。
這就是配置"無路徑解壓"操作時使用的地方。
例如使用"rar.exe",執行此操作的命令將寫成如下形式:
此示例的描述是:
當我們請求解壓歸檔時,這種效果將在請求者中可見:
一些歸檔工具可以創建"自解壓"壓縮檔案。
這意味著在處理結束時,我們將得到一個可執行檔案,當它被執行時,將解壓其中包含的內容。
當我們希望確保需要壓縮檔案內容的人在解壓縮時不會遇到問題時,這是很用的:不需要安裝任何東西,只需執行檔案,我們就會得到未壓縮的檔案!
通常,此操作的配置方式與"添加操作"類似,我們只需添加一個參數,表示我們希望最終結果是自解壓的。
這就是例如我們的"rar.exe"示例的情況。以下是配置此操作的方法:
此示例的描述是:
要創建自解壓檔案,請注意過程與通常創建壓縮檔案時相同,就像使用內部命令cm_PackFiles一樣,但在出現的請求者中,我們將選中"創建自解壓歸檔"選項。
我們可以配置Double Commander,使其忽略檔案的擴展名,而嘗試通過其內部內容檢測壓縮歸檔檔案,然後調用上面描述的適當列表和解包命令。
這就是我們將使用內部命令cm_OpenArchive的地方。
此功能的示例是當我們想要查看自解壓.exe檔案的實際內容而不必啟動它時。
另一個示例是查看以不同檔案擴展名保存的歸檔,如Microsoft Word的.docx檔案,實際上是一個壓縮的ZIP檔案。
基本上,我們可以配置Double Commander以檢測選定檔案中特定位置的戰略性數據模式,以便識別配置的歸檔。
我們將稱這些模式為"ID",本節是關於配置它們的。
我們有三個設置:ID、ID位置和ID搜索範圍。
我們將指示Double Commander在哪裡搜索特定的ID模式以識別歸檔類型,然後使用與識別的歸檔類型相關的配置命令。
讓我們從一個簡單的示例開始。以下是7-Zip歸檔開頭的快照:
通過查看其他7-Zip檔案,我們看到前六個字節總是序列0x37 0x7A 0xBC 0xAF 0x27 0x1C。
因此,我們將利用這一點,配置Double Commander,當它看到以該序列開頭的檔案時,假設該檔案是7-Zip歸檔。
這就是我們使用以下配置所做的:
我們必須將ID寫成用空格分隔的2位十六進制數。
ID位置(可選)是歸檔中ID的位置。如果不存在,ID將在歸檔開頭搜索。我們可以用"-"符號定義位置:在這種情況下,位置將從檔案末尾計算。特殊值<SeekID>確定搜索ID(如果未按ID位置的數值找到)。在範圍"0 .. 檔案大小"或"0 .. ID搜索範圍"中搜索。值可以寫成十進制(12345)或十六進制(0x3039)。對於負值,使用符號0xFFFFFFFF(-1)。
ID搜索範圍(可選)是定義<SeekID>時搜索ID的字節數。默認為1 MB。
注意:以上所有參數都可以定義多個值。我們可以使用逗號分隔這些多個值。
在我們的7-Zip歸檔示例中,ID和ID位置(0,因為在檔案開頭)就足夠了。
因此,當我們調用內部命令cm_OpenArchive時,Double Commander將掃描檔案內容,如果在檔案偏移量0處識別到"0x37 0x7A 0xBC 0xAF 0x27 0x1C"模式,它將將其處理為我們配置的7Z類型的檔案,然後使用與識別的歸檔類型相關的配置命令和參數進行列表、解壓等操作。
在大多數情況下,不需要以十六進制表示檢查檔案:檔案簽名可以在格式規範中找到或使用現有的列表、數據庫或實用程序(例如,此維基百科頁面或FreeDesktop.org MIME數據庫)。
上述步驟通常足以使用外部歸檔工具,但以防萬一我們還有幾個選項:
顯示控制台輸出 – 如果啟用,Double Commander將(逐行)將外部歸檔工具和解析器的工作結果寫入日誌窗口。
調試模式 – 類似於前一個選項,但工作結果也將輸出到Double Commander的調試消息中(請參見--debug-log的描述)。在這種情況下,包含檔案列表的臨時檔案(我們示例中的%L
)在操作完成後不會自動刪除。
如果在設置中禁用了日誌窗口的顯示,它將被強制顯示並在Double Commander關閉時隱藏。消息不會保存到日誌檔案中。
此菜單包含幾個附加功能:
自動配置 – Double Commander將檢查所有歸檔工具的可執行檔案:如果找到檔案,程序將自動添加其完整路徑並啟用歸檔工具,否則將禁用歸檔工具。
放棄修改 – 重置所有未保存的設置更改。
排序歸檔工具 – 按字母順序對歸檔工具列表進行排序。
全部禁用和全部啟用 – 啟用或禁用所有歸檔工具。
導出...和導入... – 允許我們導出和導入歸檔工具設置(所有歸檔工具或其中的一部分)。
默認情況下,擴展名在WCX插件和外部歸檔工具設置中指定的檔案作為資料夾打開。要在一個關聯的應用程序中打開它們,我們可以使用檔案的上下文菜單中的"打開"項(但在這種情況下只使用系統檔案關聯)或我們可以將所需的操作添加到"操作"菜單中。
要使用Enter鍵或雙擊,我們必須更改設置。
我們可以只是從設置中刪除擴展名,但在這種情況下令cm_OpenArchive和cm_ExtractFiles將變得不可用。另一種方法:
如果使用WCX插件,則可以打開插件設置,選擇擴展名並啟用"顯示為普通檔案(隱藏打包器圖標)"標誌。
如果使用外部歸檔工具來解包檔案,則可以填寫使用ID的欄位而不指定檔案擴展名。
對於此類檔案,Double Commander將使用關聯的圖標而不是通用的歸檔圖標。