如何从 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 路径。

这里以获取这些变量的完整列表。

相关内容