web-dev-qa-db-ja.com

コンテキストメニューのシェルコマンドを記述するときに使用できる特殊変数

Windowsのシェルコンテキストメニューを拡張する場合(たとえば、[ここにコマンドを開く]プロンプトをディレクトリに追加するため)、レジストリに「コマンド」キーを作成する必要があります。

この「コマンド」キーの値は、明らかに、任意の有効なコマンドラインにすることができます。

このコマンドラインで使用できる「特殊変数」を知りたい。

たとえば、ディレクトリのコンテキストメニュー(*)からコマンドウィンドウを開くには、次のコマンドを使用します。

cmd.exe /e:on /f:on /s /k pushd "%V"

%Vが実際に何を意味するのか、またはそのような変数の完全なリストが何であるのかについての参照は見つかりません。


(*)このために次のレジストリキーが作成されます。

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\Shell\cmdshell]
@=Open Command Prompt Here"

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\Shell\cmdshell\command]
@="cmd.exe /e:on /f:on /s /k pushd \"%V\""
49
Gio

Extending Shortcut Menus に関するChris Guzakのコメントには、利用可能なさまざまな「コマンドライン変数」がリストされています。

%* –すべてのパラメーターで置き換えます。

%〜– 2番目のパラメーター以降のすべてのパラメーターで置き換えます。

%0または%1 –最初のファイルパラメータ。たとえば、「C:\ Users\Eric\Desktop\New Text Document.txt」です。通常、これは引用符で囲み、アプリケーションのコマンドライン解析では、名前にスペースが含まれているファイルとさまざまなコマンドラインパラメータを明確にするために引用符を受け入れる必要があります(これはセキュリティのベストプラクティスであり、MSDNで言及されていると思います)。

%<n>(<n>は2〜9)– nに置き換えます番目 パラメータ。

%s –コマンドを表示します。

%h –ホットキー値。

%i –共有メモリハンドルに格納されているIDListがここに渡されます。

%l –最初のパラメーターの長いファイル名形式。 Win32/64アプリケーションには長いファイル名が渡されるのに対し、Win16アプリケーションには短いファイル名が渡されることに注意してください。 %lを指定すると、アプリケーションタイプをプローブする必要がなくなるため、推奨されます。

%d –最初のパラメーターのデスクトップ絶対解析名(ファイルシステムパスを持たないアイテムの場合)。

%v –ない動詞の場合、すべてを意味します。渡されたパラメーターがない場合、これは作業ディレクトリーです。

%w –作業ディレクトリ。

したがって、%Lまたは%lが推奨されます。

また参照 http://www.robvanderwoude.com/ntstart.php

61
juze

この質問に興味をそそられたので、実験をしました。フォルダがありますC:\iso。右クリックしたときに見つけたもの:

D = C:\iso
H = 0
I = :115057472:7932
L = C:\iso
S = 1
V = C:\iso
W = C:\

Iは、試行するたびに異なる数値のセットを返しました。 Hは常に0で、Sは常に1でした。DL、およびVはすべてターゲットフォルダーでした。 Wは、ターゲットフォルダーのでした。誰もがこれを拡張したいと思いますか?

参考:次のレジストリエントリを使用してテストしました。

[HKEY_CLASSES_ROOT\Directory\Shell\testcmd]
@="Test Command Window Directory"
[HKEY_CLASSES_ROOT\Directory\Shell\testcmd\command]
@="cmd.exe /k \"echo %A`%B`%C`%D`%E`%F`%G`%H`%I`%J`%K`%L`%M`%N`%O`%P`%Q`%R`%S`%T`%U`%V`%W`%X`%Y`%Z\""

( `文字は区切り文字として使用されました)

11
BillP3rd

これがcmd.exeの引数/構文です

/kは、次の文字列で指定されたコマンドを実行して、コマンドpushd %Vを実行します。 引数pushdが受け入れる だけなので、そのパスは%V a右クリックされたフォルダーのパスを含む、エクスプローラーによって提供される変数。

3
Nifle

%Vの意味やそれらの変数のリストを見つけるのは確かに困難です。Googleを通じて、%Lも存在しているように見えることがわかりました。プロンプトに%Vまたは%L以上を渡す必要はないと思います。他に役立つ情報はないと思います。 %Vはディレクトリ名、%Lはファイルの場所です。 「エコー」を行うことは、疑わしいときに役立ちます...

1
Tamara Wijsman