雖然 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%%%
是由 cmd.exe 擴展的,它不會在 UNC 路徑中啟動。
我的問題是;如何取得在登錄機碼中展開的 UNC 和 Windows 路徑的右鍵單擊「磁碟機或目錄的背景」的路徑,以便將其傳遞給命令?
這些將分別進入HKCR,Directory\Shell\xxx\command
和HKCR,Directory\Background\Shell\xxx\command
。
這是一個開源項目,可在 GitHub 上找到:https://github.com/Ehryk/ContextMenuTools
答案1
我不確定...但是你的意思是這樣的嗎?(您需要使用%V而不是%1)
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 路徑。
看這裡有關這些變數的完整清單。