windows 7 – コンテキストメニューのシェルコマンドを書くときに利用できる特別な変数は何ですか?

command-line windows windows-7 windows-registry

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

この ‘command’ キーの値は、どうやら有効なコマンドラインを指定することができます

どの’特別な変数’がこのコマンドラインで使用できるのか知りたいです

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

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\""

  52  Gio  2010-05-02


ベストアンサー

ショートカットメニューの拡張 MSDN の記事に Chris Guzak さんのコメントがあります

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

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

0 または %1 – 最初のファイル・パラメータ。例えば、”C:Users\Eric\DesktopNew Text Document.txt”.一般的に、これは引用符でなければならず、アプリケーションのコマンドライン解析では、名前にスペースがあるファイルや異なるコマンドラインパラメータを区別するために引用符を受け入れるべきです(これはセキュリティのベストプラクティスであり、MSDNで言及されていると私は信じています)

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

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

h – ホットキー値

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

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

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

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

w – 作業ディレクトリ

したがって、%Lまたは%lが好ましい

http://www.robvanderwoude.com/ntstart.phpも参照してください

65  juze  2012-09-13


この質問に興味をそそられたので、いくつか実験してみました。私は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でした。D, L, 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\""

(区切り文字には ` を使用しています)

14  BillP3rd  2010-08-28


cmd.exe の引数/構文です

/kは以下の文字列で指定されたコマンドを実行するのでpushd %V、引数pushdが受け付ける唯一の引数pushdが受け付けるはパスであるので、%V右クリックしたフォルダのパスを含む変数がエクスプローラで配信されることになります

3  Nifle  2010-05-02


V が何を意味するのか、あるいはそれらの変数のリストを見つけるのは確かに難しいですが、Google で調べてみると、%L も存在するようです。プロンプトに %V や %L 以上を渡す必要はないと思いますが、他に有用な情報はないと思います。V はディレクトリ名、%L はファイルの場所です。疑問があるときは ‘echo’ を実行すると良いでしょう

2  Tamara Wijsman  2010-05-02


タイトルとURLをコピーしました