如何從 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%%%是由 cmd.exe 擴展的,它不會在 UNC 路徑中啟動。

我的問題是;如何取得在登錄機碼中展開的 UNC 和 Windows 路徑的右鍵單擊「磁碟機或目錄的背景」的路徑,以便將其傳遞給命令?

這些將分別進入HKCR,Directory\Shell\xxx\commandHKCR,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 路徑。

這裡有關這些變數的完整清單。

相關內容