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 comandosagregue 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.