¿Cómo inicio cmd.exe desde una ruta UNC (para asignar una unidad de red)?

¿Cómo inicio cmd.exe desde una ruta UNC (para asignar una unidad de red)?

Si bien cmd.exe puede funcionar con rutas UNC usando PUSHD \\UNC\Path, estoy intentando iniciar cmd o un comando similar DESDE una ruta UNC. Este es el por qué:

Estoy agregando "Asignar unidad de red aquí" a mi conjunto de herramientas del menú contextual, como "Iniciar Powershell aquí" y "Abrir símbolo del sistema aquí". Agregan claves de registro al registro de Windows y esto funciona muy bien.

Como ejemplos, estos abren un símbolo del sistema aquí:

"cmd /s /k ""VER && TITLE Command Prompt: %1 && PUSHD ""%1"" "" "(Para carpetas que hacen clic derecho, funciona para rutas UNC)

"cmd /s /k ""VER && TITLE Command Prompt: %%%CD%%%"" "(Para fondos de directorios al hacer clic derecho, no funciona para rutas UNC)

El comando se ingresa como una clave de registro DWORD, y esto funciona al hacer clic derecho en una carpeta:

"net use * ""%1"" "(Para carpetas que hacen clic derecho, funciona para rutas UNC)

"net use * ""%%%CD%%%"" "(Para fondos de directorios al hacer clic derecho, no funciona para rutas UNC)

Sospecho %%%CD%%%que cmd.exe lo está expandiendo, que no se inicia en una ruta UNC.

Mi pregunta es; ¿Cómo puedo ampliar la ruta del 'fondo de una unidad o directorio' en el que se hizo clic con el botón derecho para las rutas UNC y Windows en una clave de registro con el fin de pasarla a un comando?

Estos entrarán HKCR,Directory\Shell\xxx\commandy HKCR,Directory\Background\Shell\xxx\command, respectivamente.

Este es un proyecto de código abierto, disponible en GitHub:https://github.com/Ehryk/ContextMenuTools

Respuesta1

No estoy seguro... pero ¿te refieres a algo como esto?(necesitas usar %V en lugar de %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\" \""

(Por cierto, NoWorkingDirectory es para que no reciba un mensaje de error inicial cuando se abre cmd con un UNC como directorio de trabajo. Esto inicia cmd sin un directorio actual, después de lo cual hace un pushd para obtener una letra de unidad temporal)

Editar: debido a que está haciendo clic en un espacio en blanco de un directorio, el parámetro %1 no se completa (como ocurre si hace clic en el directorio mismo). Entonces necesitas usar %V o %W. Estos representan el directorio de trabajo, que es la ruta UNC al hacer clic derecho en un espacio en blanco de un directorio en red.

Veraquípara obtener una lista completa de estas variables.

información relacionada