Double Commander

2.12. 參數中的變量

內容

1. 快速介紹
2. 基本參數變量
3. 基本後綴變量
4. 編號後綴
5. 為每個文件指定前綴和後綴
6. 面板路徑
7. 結果是否帶引號
8. 路徑結尾是否有分隔符
9. 文件列表
10. 文件列表的後綴
11. 文件列表後綴的組合
12. 在終端中執行
13. 交互
14. 其他變量
15. 所有變量的匯總表
16. 環境變量

1. 快速介紹

變量將在配置工具欄按鈕或設置文件關聯操作和熱鍵操作時幫助我們。

當我們需要根據當前選中的文件、所在的目錄以及其他與面板中顯示內容相關的上下文信息為命令提供參數時,基本上會使用這些變量。

這裡有一個簡單的例子。用戶配置了一個按鈕來啟動IrfanView,並使用變量%p作為參數。

變量示例

當用戶點擊該按鈕時,它將啟動IrfanView,並將變量%p替換為活動面板中當前選中的文件。

這就是本頁面描述的變量的含義。

正如您將看到的,大多數變量都以百分號%開頭。

注意:變量和後綴是區分大小寫的!

2. 基本參數變量

這些是可以使用的基本變量,與當前選擇相關。

默認情況下,包含空格和/或特殊字符的變量值會自動轉義:在Windows中值會被雙引號包圍,或在類Unix系統中特殊字符前會加上"\"。如果您需要不帶引號的結果,請參見結果是否帶引號部分。

對於每個變量,示例假設我們指向文件C:\Users\UserName\Desktop\comment.png。

基本變量
變量含義
%p
完整文件名,路徑+文件名
示例: %p = "C:\Users\UserName\Desktop\comment.png"
%f
僅文件名,包括擴展名
示例: %f = "comment.png"
%d
僅路徑,不包括結尾的目錄分隔符
示例: %d = "C:\Users\UserName\Desktop"
%z
路徑中最後一個目錄的名稱
示例: %z = "Desktop"
%o
僅文件名,不包括擴展名
示例: %o = "comment"
%e
僅擴展名,不包括點號
示例: %e = "png"
%v
相對於當前活動目錄的文件名
例如當我們調用內部命令cm_FlatView時適用。
如果從目錄"C:\Users\UserName"進行平面視圖,%v將結果為"Desktop\comment.png"

%a變量可用於虛擬文件系統(打開的存檔或文件系統插件):字符串包括虛擬文件系統的路徑(存檔的完整名稱或帶有"wfx://"的WFX插件名稱)和相對於虛擬文件系統根目錄的完整文件名。

如果選擇了多個文件,這些變量將返回一行中所有選中文件的值。要始終獲取光標下文件的值,我們可以使用編號後綴0

3. 基本後綴變量

在上述變量字母之後,我們可以添加另一個字母到前一個字母中,以更精確地指定我們想要使用的內容。

對於每個變量,示例假設:
左側面板指向文件"C:\LeftFolder\File.lft"
右側面板指向"C:\RightFolder\File.rgh"
當前活動面板是右側面板。

基本後綴
後綴含義
s
源或活動面板(無論在左側還是右側)
示例: %ps = "C:\RightFolder\File.rgh"
t
目標或非活動面板(無論在左側還是右側)
示例: %pt = "C:\LeftFolder\File.lft"
l
左側面板
示例: %pl = "C:\LeftFolder\File.lft"
r
右側面板
示例: %pr = "C:\RightFolder\File.rgh"
p
兩個面板,活動面板在前,然後是一個空格,接著是非活動面板
示例: %pp = "C:\RightFolder\File.rgh" "C:\LeftFolder\File.lft"
b
兩個面板,左側面板在前,然後是一個空格,接著是右側面板
示例: %pb = "C:\LeftFolder\File.lft" "C:\RightFolder\File.rgh"

4. 編號後綴

如果我們當前選擇了多個文件,可以在前面提到的後綴基礎上添加編號後綴,以精確指定要使用哪個文件。

對於表中的每個元素,我們假設源面板指向"C:\temp\",並且我們選擇了二十個文件,從"FileA.txt"、"FileB.txt"等一直到"FileZ.txt"。

編號後綴
後綴含義
0
光標下的文件
示例: %ps0 = "C:\temp\FileY.txt"
1
第一個選中的文件
示例: %ps1 = "C:\temp\FileA.txt"
2
第二個選中的文件
示例: %ps2 = "C:\temp\FileB.txt"
3
第三個選中的文件
示例: %ps3 = "C:\temp\FileC.txt"
21
第二十一個選中的文件
示例: %ps21 = "C:\temp\FileU.txt"

5. 為每個文件指定前綴和後綴

有時當我們向可執行文件傳遞參數時,需要在文件名前包含某些內容。

有時我們希望在文件名前後都包含某些內容。

請注意,以下內容將應用於每個選中的項目。

對於表中的每個元素,我們假設當前在"C:\Windows\Fonts"中選擇了三個文件,分別是"courrier.ttf"、"fixedsys.ttf"和"terminal.ttf"。

前綴和後綴
前綴和後綴含義
{}
一對大括號將導致在每個選中項目前添加大括號之間的文本
示例: %fs{+} = "+courrier.ttf" "+fixedsys.ttf" "+terminal.ttf"
{}{}
兩對大括號將導致在每個選中項目前後分別放置大括號之間的文本。
示例: %fs{[}{]} = "[courrier.ttf]" "[fixedsys.ttf]" "[terminal.ttf]"

6. 面板路徑

之前我們已經指出了與面板內當前選中項目相關的變量。

但我們也可以使用變量%D來表示我們要引用面板的目錄名。

對於該變量,我們可以添加與上述相同的後綴字母,以精確指定我們要引用哪個面板。

對於每個變量,示例假設:
左側面板在"C:\Reference"
右側面板指向"E:\Work"
當前活動面板是右側面板。

面板路徑
變量含義
%D
單獨使用,無後綴,將返回當前活動面板的路徑
示例: "E:\Work"
%Ds
當前活動或源面板的目錄(無論在左側還是右側)
示例: "E:\Work"
%Dt
非活動或目標面板的目錄(無論在左側還是右側)
示例: "C:\Reference"
%Dl
左側面板的目錄
示例: "C:\Reference"
%Dr
右側面板的目錄
示例: "E:\Work"
%Z
單獨使用,無後綴,將返回當前活動面板路徑的最後一個目錄名
示例: "Work"
%Zs
當前活動面板路徑的最後一個目錄名(無論在左側還是右側)
示例: "Work"
%Zt
非活動面板路徑的最後一個目錄名(無論在左側還是右側)
示例: "Reference"
%Zl
左側面板路徑的最後一個目錄名
示例: "Reference"
%Zr
右側面板路徑的最後一個目錄名
示例: "Work"

%A變量可用於虛擬文件系統(打開的存檔或文件系統插件):存檔的完整名稱或帶有"wfx://"的WFX插件名稱。

7. 結果是否帶引號

如您之前所見,由於歷史和傳統原因,DC將返回帶引號的結果。

最初當文件名中有空格並且我們想將文件名作為參數傳遞並希望整個過程正常工作時,這是很有效的。

但是隨著新變量的添加,很明顯我們需要一種方法來獲得不帶引號的結果。一個基本的例子是當我們想要連接一個源文件名,但只是沒有擴展名的文件名,然後加上我們自己指定的新擴展名。

因此,不是添加新的變量來返回相同但不帶引號的內容,我們仍然可以使用相同的變量表示相同的含義,但只需在參數行上預先設置類似%"0的內容,以指示DC從現在開始,在評估行的結尾,不要對結果加引號。

基本上我們會有:

%"0 : 從這個位置開始,生成的文件名將不帶引號
%"1 : 從這個位置開始,生成的文件名將帶引號
%"  : 也接受,恢復默認值,即結果帶引號

下表給出了一個示例,我們選中了一個名為"Client List.mdb"的文件,以及帶引號/不帶引號字符串的各種組合結果。

帶引號與否的示例
表達式結果
%o.zip
"Client List".zip
%"0%o.zip
Client List.zip
%"0"%o.zip"
"Client List.zip"
%"0"%o.zip" %"1%f
"Client List.zip" "Client List.mdb"

8. 路徑結尾是否有分隔符

如您之前所見,由於歷史和傳統原因,當DC返回路徑時,它將不帶結尾路徑分隔符。

這可以通過使用一個變量來改變,該變量將確定以下行中的路徑變量是否帶結尾路徑分隔符。

基本上我們有:

%/0 : 返回的路徑將不帶結尾分隔符
%/1 : 返回的路徑將帶結尾分隔符
%/  : 也接受,默認情況下,返回的路徑將不帶結尾分隔符

下表給出了一個示例,我們選擇了目錄"C:\Users\UserName\Desktop",以及結尾路徑變量的各種組合結果:

結尾路徑變量示例
表達式結果
%D
"C:\Users\UserName\Desktop"
%/0%D
"C:\Users\UserName\Desktop"
%/1%D
"C:\Users\UserName\Desktop\"
%/%D
"C:\Users\UserName\Desktop"

當我們從多個變量組合名稱時,這個變量會很有用。例如,在Windows中,%Dt\%f0(手動添加目錄分隔符)而不是%/1%Dt%f0在目錄內會正常工作,但如果在非活動面板中打開驅動器根目錄,Double Commander將返回驅動器字母後有兩個目錄分隔符的不正確路徑。

9. 文件列表

一些應用程序將接受單個文件名作為參數,並假定該文件是包含文件名列表的文本文件。

Double Commander提供了變量,這些變量將在臨時文件目錄中創建一個臨時文本文件,其中包含所有指定選中項目的列表,並將臨時創建文件的文件名替換為變量。

文件列表變量
表達式描述
%L
選中項目的完整文件名列表(路徑+文件名)的文件名
%F
選中項目的僅文件名列表的文件名
%R
選中項目的僅相對路徑名列表的文件名

Double Commander將在Windows中使用ANSI系統編碼,或在類Unix系統中使用默認系統編碼(在GNU/Linux發行版中通常是UTF-8)。

關閉時,Double Commander會刪除所有此類臨時文件。

10. 文件列表的後綴

默認情況下,文件列表中的上述文件名是不帶引號的。但如果需要,您可以添加一個後綴來改變這一點。

此外,還有後綴可以指定是否希望此文件列表以UT8或UTF16編碼。

文件列表變量的後綴
表達式描述
Q
列表中的文件名將帶引號
U
列表將以UTF8格式編碼
W
列表將以UTF16格式編碼

11. 文件列表後綴的組合

您還可以添加另一個後綴,使用前面提到的相同後綴字母來指定需要哪個面板的文件列表。

以下是可能的示例:

文件列表變量後綴的組合
表達式描述
%LQt
完整文件名,帶引號,來自目標面板的選中文件
%FUs
僅文件名,UTF8格式,來自源面板的選中文件
%RQW
相對路徑的文件名,帶引號,UTF16格式,來自源面板(默認)的文件

12. 在終端中執行

您可以在參數中指定是否要將配置的命令行在終端中執行。

為此,您將使用%t變量。

在終端中執行
表達式描述
%t0
在終端中運行並在結束時請求關閉
%t1
在終端中運行並在結束時保持打開

13. 交互

以下是兩個有用的變量,用於顯示消息並在運行時提示用戶提供參數,帶有建議的默認值:

交互
表達式描述
%[message to show]
將顯示括號之間指定文本的消息框
%[message;default_val]
將提示用戶輸入值,並提供默認值

交互示例:

交互示例
表達式描述
%[Make sure ThisFile.ext is closed!]
將在執行操作前顯示消息"Make sure ThisFile.ext is closed!"。
%[Enter WIDTH value for image conversion;1024]
將提示用戶輸入值,顯示文本"Enter WIDTH value for image conversion",默認建議值為1024,但用戶可以輸入其他值。用戶輸入的內容將替換命令行中"%[query;default]"表達式所在位置的內容。

14. 其他變量

在最後一節中,我們展示了尚未介紹的變量。

其他變量
表達式描述
%%
將簡單地替換為單個%符號
%#
從這個位置開始,#符號將被視為%
#%
從前述狀態開始,將使%被視為變量前綴
%?
將顯示即將執行的命令行。

%%的用途是當我們需要在參數中有%符號,但又不希望它被其他內容替換時,因為它後面可能跟著一個字母,從而形成一個實際有效的變量。

%?變量在配置新工具按鈕時特別有用,可以確保了解將用作替換參數的內容。

通過%?,DC讓您看到實際用於啟動某物的命令和參數。

不僅如此,您甚至可以在啟動某物時在最後一分鐘更改一些內容。

當您在不確定要傳遞給目標應用程序的參數時,這特別有用。

有時百分號和變量字母的組合可能會與系統變量衝突。

例如,如果您輸入%os%ot,認為它將被替換為活動和非活動面板文件擴展名的簡單連接,您可能會驚訝地發現它在Windows下可能無法正常工作。

序列%os%通常會被操作系統名稱替換,因為%os%是代表操作系統名稱的系統變量。

這就是%#有用的地方。

在這種示例中,您將輸入%##os#ot

%#指示DC從現在開始,#現在是百分號的等價物,這樣就不會與可能的系統變量衝突。

這很少需要,但如果需要的話,知道它的存在會讓您很高興!

然後,如果需要,#%將恢復%作為變量的實際百分號前綴。

15. 所有變量的匯總表

本節沒有新內容,但讓我們將所有支持的變量及其含義匯總到一個表中。

其他變量
表達式描述
%p
完整的文件名,包括路徑
%f
僅文件名,包括擴展名
%d
僅路徑
%z
路徑中最後一個目錄
%o
僅文件名,不包括擴展名
%e
僅文件擴展名,不包括點號
%v
相對於當前活動目錄的文件名
s
源或活動面板的後綴(示例:%ps)
t
目標或非活動面板的後綴(示例:%pt)
l
左側面板的後綴(示例:%pl)
r
右側面板的後綴(示例:%pr)
p
兩個面板的後綴,活動面板在前,非活動面板在後(示例:%pp)
b
兩個面板的後綴,左側面板在前,右側面板在後(示例:%pb)
0
光標下的文件(示例:%ps0)
1
第一個選中的文件(示例:%ps1)
2
第二個選中的文件(示例:%ps2)
3
第三個選中的文件(示例:%ps3)
21
第二十一個選中的文件(示例:%ps21)
{prefix}
{}使用一次,將設置添加到文件名前的前綴(例如:%f{+})
{prefix}{suffix}
{}使用兩次,將設置前綴和後綴,分別在文件名前後(例如:%f{[}{]})
%D
默認情況下,活動(源)面板的路徑
%Ds
特別指定活動(源)面板的路徑
%Dt
非活動(目標)面板的路徑
%Dl
左側面板的路徑,無論哪個是活動的
%Dr
右側面板的路徑,無論哪個是活動的
%Z
默認情況下,活動(源)面板路徑的最後一個目錄名
%Zs
特別指定活動(源)面板路徑的最後一個目錄名
%Zt
非活動(目標)面板路徑的最後一個目錄名
%Zl
左側面板路徑的最後一個目錄名,無論哪個是活動的
%Zr
右側面板路徑的最後一個目錄名,無論哪個是活動的
%"0
從這個位置開始,生成的文件名將不帶引號
%"1
從這個位置開始,生成的文件名將帶引號
%"
也接受,使生成的文件名重新帶引號
%/0
默認情況下,返回的路徑將不帶結尾分隔符
%/1
返回的路徑將帶結尾分隔符
%/
也接受,默認情況下,返回的路徑將不帶結尾分隔符
%L
選中項目文件列表的文件名,僅包含完整文件名(路徑+文件名)
%F
選中項目文件列表的文件名,僅包含文件名
%R
選中項目文件列表的文件名,僅包含相對路徑名
Q
%L、%F或%R的後綴,用於請求帶引號的文件名
U
%L、%F或%R的後綴,用於請求UTF8格式的列表文件
W
%L、%F或%R的後綴,用於請求UTF16格式的列表文件
%t0
在終端中運行並在結束時請求關閉
%t1
在終端中運行並在結束時保持打開
%[message to show]
將顯示括號之間指定文本的消息框
%[message;default_val]
將提示用戶輸入值並提供建議值
%%
將簡單地替換為單個%符號
%#
從這個位置開始,#符號將被視為%
#%
從前述狀態開始,將使%被視為變量前綴
%?
將顯示即將執行的命令行

16. 環境變量

我們可以在Double Commander設置中使用環境變量:在工具欄上的可執行文件名和圖標、插件名、收藏目錄等。這是一種方便的指定路徑的方法,如果我們不想使用絕對路徑。

Double Commander支持系統環境變量,並提供了一些自己的環境變量:

環境變量
變量描述
%COMMANDER_EXE%
Double Commander可執行文件的完整名稱(路徑+文件名)(符號鏈接將被替換為實際文件)
%COMMANDER_PATH%
Double Commander可執行文件所在的目錄
%COMMANDER_DRIVE%
Double Commander文件夾所在的磁盤:
- Windows:驅動器字母(帶冒號);
- 類Unix系統:掛載點。
%COMMANDER_INI%
主配置文件(doublecmd.xml)的完整名稱(路徑+文件名)
%COMMANDER_INI_PATH%
Double Commander配置文件所在的目錄
%DC_CONFIG_PATH%
Double Commander配置文件所在的目錄

變量名%COMMANDER_PATH%%DC_CONFIG_PATH%不區分大小寫,我們可以使用百分號%,而不管操作系統系列(為了向後兼容,這對於跨平台應用程序很方便)。然而,在類Unix系統中,環境變量名區分大小寫,並且傳統上用大寫字母書寫,所以使用傳統拼寫可能是一個好習慣。

在Windows中,我們還可以額外使用格式為%$Name%的偽環境變量,它們對應於標準的Windows系統文件夾(為了獲取值,Double Commander使用Windows API中的SHGetSpecialFolderPathSHGetKnownFolderPath函數)。這些不是正常的環境變量,對子進程(從Double Commander啟動的應用程序)不可用,但在其他方面我們可以以類似於環境變量的方式使用它們。所有這些變量都收集在路徑選擇助手菜單中:在文件或目錄選擇按鈕的右側是按鈕選擇適當路徑的一些功能 選擇適當路徑的一些功能,描述見此處

所有這些變量都已添加到常用文件夾列表菜單中(特殊目錄子菜單)。


最初由Rustem創建(dok_rust@bk.ru)

Valid HTML 4.0 Transitional CSS Valid!