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"まで20個のファイルを選択していると仮定します。

番号付きサフィックス
サフィックス意味
0
カーソル下のファイル
例: %ps0 = "C:\temp\FileY.txt"
1
最初に選択されたファイル
例: %ps1 = "C:\temp\FileA.txt"
2
2番目に選択されたファイル
例: %ps2 = "C:\temp\FileB.txt"
3
3番目に選択されたファイル
例: %ps3 = "C:\temp\FileC.txt"
21
21番目に選択されたファイル
例: %ps21 = "C:\temp\FileU.txt"

5. 各ファイルへのプレフィックスとサフィックスの指定

実行ファイルにパラメータを渡す際、ファイル名の前に特定の内容を含める必要があることがあります。

また、ファイル名の前後に特定の内容を含めたいこともあります。

以下の内容は、選択された各項目に適用されることにご注意ください。

表中の各要素について、現在"C:\Windows\Fonts"で"courrier.ttf"、"fixedsys.ttf"、"terminal.ttf"の3つのファイルが選択されていると仮定します。

プレフィックスとサフィックス
プレフィックスとサフィックス意味
{}
中括弧のペアにより、選択された各項目の前に中括弧間のテキストが追加されます
例: %fs{+} = "+courrier.ttf" "+fixedsys.ttf" "+terminal.ttf"
{}{}
中括弧の2つのペアにより、選択された各項目の前後にそれぞれ中括弧間のテキストが配置されます。
例: %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はドライブレターの後に2つのディレクトリ区切り文字を持つ誤ったパスを返します。

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
2番目に選択されたファイル(例:%ps2)
3
3番目に選択されたファイル(例:%ps3)
21
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のSHGetSpecialFolderPathおよびSHGetKnownFolderPath関数を使用します)。これらは通常の環境変数ではなく、子プロセス(Double Commanderから起動されたアプリケーション)には利用できませんが、他の点では環境変数と同様に使用できます。これらのすべての変数はパス選択ヘルパーメニューに収集されています:ファイルまたはディレクトリ選択ボタンの右側にはボタン適切なパスを選択するための機能 適切なパスを選択するための機能があり、説明はこちらにあります。

これらのすべての変数はよく使うフォルダリストメニュー(特別なディレクトリサブメニュー)に追加されています。


最初にRustemによって作成されました(dok_rust@bk.ru)

Valid HTML 4.0 Transitional CSS Valid!