windows batch-file unc

windows - ¿Cómo se ejecuta el archivo por lotes desde el recurso compartido de red sin mensaje "Ruta UNC no compatible"?



batch-file (8)

Básicamente, no puede ejecutarlo desde una ruta UNC sin ver ese mensaje.

Lo que suelo hacer es simplemente poner un CLS en la parte superior del script para no tener que ver ese mensaje. Luego, especifique la ruta completa a los archivos en el recurso compartido de red que necesita usar.

Estoy intentando ejecutar un archivo por lotes desde un recurso compartido de red, pero sigo recibiendo el siguiente mensaje: "La ruta de acceso UNC no es compatible. Inicialización en el directorio de Windows". El archivo por lotes se encuentra en //Server/Soft/WPX5/install.bat . Mientras estoy conectado como administrador, desde mi Escritorio con Windows 7, //Server/Soft/WP15/ a //Server/Soft/WP15/ y //Server/Soft/WP15/ doble clic en install.bat, es cuando obtengo la "ruta UNC no son compatibles". mensaje. Encontré algunas sugerencias en línea que indican que la unidad de mapeo no funcionará, pero usar un enlace simbólico resolverá este problema, pero el enlace simbólico no funcionó para mí. A continuación se muestra mi contenido de archivo por lotes, agradecería cualquier ayuda que pueda ayudarme a lograr lo que estoy tratando de hacer. Básicamente, quiero poder ejecutar el archivo por lotes desde //Server/Soft/WP15/install.bat .

Contenido del archivo por lotes

mklink /d %userprofile%/Desktop/WP15 //server/soft/WP15 //server/soft/WP15/setup.exe robocopy.exe "//server/soft/WP15/Custom" /copyall "C:/Program Files (x86)/WP/Custom Templates" Regedit.exe /s //server/soft/WPX5/Custom/Migrate.reg

Además, ¿cómo elimino el enlace simbólico una vez completada la instalación?


En lugar de lanzar el lote directamente desde el explorador, cree un acceso directo al lote y establezca el directorio inicial en las propiedades del acceso directo a una ruta local como% TEMP% o algo así.

Para eliminar el enlace simbólico, use el comando rmdir.


Hay una configuración de registro para evitar esta comprobación de seguridad (utilícela a su propio riesgo, sin embargo):

Debajo de la ruta de registro

HKEY_CURRENT_USER
/Software
/ Microsoft
/ Procesador de comandos

agregue el valor DisableUNCCheck REG_DWORD y establezca el valor en 0 x 1 (Hex).


Me encontré con el mismo problema trabajando recientemente con un archivo por lotes en una unidad de red compartida en Windows 7.

Otra forma que funcionó para mí fue asignar el servidor a una unidad a través del Explorador de Windows: Herramientas -> Conectar unidad de red. Déle una letra de unidad y una ruta de carpeta a / yourserver. Como trabajo con el recurso compartido de red, a menudo el mapeo hace que sea más conveniente y resuelve el error "Ruta UNC no es compatible".


Mi situación es un poco diferente. Estoy ejecutando un archivo por lotes en el inicio para distribuir la última versión de las aplicaciones empresariales internas.

En esta situación, estoy usando la clave de ejecución del registro de Windows con la siguiente cadena

cmd /c copy //serverName/SharedFolder/startup7.bat %USERPROFILE% & %USERPROFILE%/startup7.bat

Esto ejecuta dos comandos al inicio en la secuencia correcta. Primero, copie el archivo de proceso por lotes localmente en un directorio para el que el usuario tenga permiso. Luego ejecutando el mismo archivo por lotes. Puedo crear un directorio local c: / InternalApps y copiar todos los archivos de la red.

Probablemente sea demasiado tarde para resolver la pregunta del cartel original, pero puede ayudar a otra persona.


Necesitaba solo navegar por Windows Explorer a través del servidor compartido, luego hacer doble clic en iniciar el archivo por lotes. @dbenham me llevó a una solución más fácil para mi escenario (sin las preocupaciones de popd ):

:: Capture UNC or mapped-drive path script was launched from set NetPath=%~dp0 :: Assumes that setup.exe is in the same UNC path %NetPath%setup.exe :: Note that NetPath has a trailing backslash ("/") robocopy.exe "%NetPath%Custom" /copyall "C:/Program Files (x86)/WP/Custom Templates" Regedit.exe /s %NetPath%../WPX5/Custom/Migrate.reg :: I am not sure if WPX5 was typo, so use ".." for parent directory set NetPath= pause


PUSHD y POPD deberían ayudar en su caso.

@echo off :: Create a temporary drive letter mapped to your UNC root location :: and effectively CD to that location pushd //server/soft :: Do your work WP15/setup.exe robocopy.exe "WP15/Custom" /copyall "C:/Program Files (x86)/WP/Custom Templates" Regedit.exe /s WPX5/Custom/Migrate.reg :: Remove the temporary drive letter and return to your original location popd

Tipo PUSHD /? desde la línea de comando para más información.


Siento que cls es la mejor respuesta. Oculta el mensaje UNC antes de que cualquiera pueda verlo. Lo combiné con un @pushd %~dp0 justo después de que pareciera que abriría el script y @pushd %~dp0 la ubicación en un solo paso, evitando así nuevos problemas de UNC.

cls @pushd %~dp0 ::::::::::::::::::: :: your script code here ::::::::::::::::::: @popd

Notas:

pushd cambiará su directorio de trabajo a la ubicación de los scripts en la nueva unidad asignada.

popd al final, para limpiar la unidad mapeada.