UNC パスから cmd.exe を起動するにはどうすればいいですか (ネットワーク ドライブをマップするため)?

UNC パスから cmd.exe を起動するにはどうすればいいですか (ネットワーク ドライブをマップするため)?

cmd.exe は を使用して UNC パスで動作できますがPUSHD \\UNC\Path、UNC パスから cmd または同様のコマンドを起動しようとしています。理由は次のとおりです。

「ここで Powershell を起動」や「ここでコマンド プロンプトを開く」などのコンテキスト メニュー ツール スイートに「ここでネットワーク ドライブをマップ」を追加しています。これにより、Windows レジストリにレジストリ キーが追加され、非常にうまく機能します。

たとえば、次のコマンドでコマンド プロンプトが開きます。

"cmd /s /k ""VER && TITLE Command Prompt: %1 && PUSHD ""%1"" "" "(フォルダーを右クリックすると、UNC パスが機能します)

"cmd /s /k ""VER && TITLE Command Prompt: %%%CD%%%"" "(ディレクトリの背景を右クリックする場合、UNC パスでは機能しません)

コマンドはレジストリ キー DWORD として入力され、フォルダーを右クリックすると機能します。

"net use * ""%1"" "(フォルダーを右クリックすると、UNC パスが機能します)

"net use * ""%%%CD%%%"" "(ディレクトリの背景を右クリックする場合、UNC パスでは機能しません)

%%%CD%%%UNC パスでは起動しない cmd.exe によって展開されていると思われます。

私の質問は、コマンドに渡す目的でレジストリ キーで展開された UNC パスと Windows パスの両方について、右クリックした「ドライブまたはディレクトリの背景」のパスを取得するにはどうすればよいかということです。

HKCR,Directory\Shell\xxx\commandこれらはそれぞれ、およびに入りますHKCR,Directory\Background\Shell\xxx\command

これはオープンソース プロジェクトであり、GitHub で入手できます。https://github.com/Ehryk/ContextMenuTools

答え1

よく分かりませんが、このようなことを言いたかったのでしょうか?(%1 の代わりに %V を使用する必要があります)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\cmd]
@="Open cmd here"
"NoWorkingDirectory"=""

[HKEY_CLASSES_ROOT\Directory\Background\shell\cmd\command]
@="cmd /s /k \"VER && TITLE Command Prompt: \"%V\"  && PUSHD \"%V\" \""

(ちなみに、NoWorkingDirectory は、作業ディレクトリとして UNC を使用して cmd を開いたときに初期エラー メッセージが表示されないようにするためのものです。これにより、現在のディレクトリなしで cmd が起動し、その後、pushd を実行して一時的なドライブ文字を取得します)

編集: ディレクトリの空白部分をクリックしているため、%1 パラメータは入力されません (ディレクトリ自体をクリックした場合のように)。したがって、%V または %W を使用する必要があります。これらは、ネットワーク ディレクトリの空白部分を右クリックしたときの UNC パスである作業ディレクトリを表します。

見るこここれらの変数の完全なリストについては、こちらをご覧ください。

関連情報