¿Cómo se maneja "CMD no admite rutas UNC como directorios actuales"?


Respuestas:


34

Si está considerando crear scripts, siempre es útil aprender sobre los comandos pushdy popd. A veces no puede estar seguro de qué letras de unidad ya se utilizan en la máquina en la que se ejecutará el script y simplemente necesita tomar la siguiente letra de unidad disponible. Como net userequerirá que especifique la unidad, simplemente puede usarla pushd \\server\foldery luego popdcuando haya terminado.


Si especifica '*' en lugar de una letra de unidad, el uso neto utilizará la primera comprobación de unidad disponible de ZA. así que 'uso neto * \\ servidor \ recurso compartido' sin Z: unidad asignada
asignaría

Pero entonces no sabes qué letra de unidad se asignó, para el resto del guión.
tomfanning 05 de

@tomfanning Puede encontrar la letra de la unidad utilizando esto (wmic logicaldisk get caption, providername, drivetype, volumename) desde el símbolo del sistema y luego analiza la salida buscando su \\ servername \ sharename. serverfault.com/questions/62578/…
Chris Magnuson el

1
@pk. ¿Qué pasa si el script se bloqueó antes de ejecutar tu popd?
Pacerier

15

O podría cambiar su shell a PowerShell . Tiene soporte completo para rutas UNC.


Excepto cuando explorer.exe tiene un identificador en el archivo que está tratando de eliminar. Incluso con la ventana del explorador cerrada, creo que el proveedor de PS FileSystem (suponiendo que sea un proveedor) probablemente usa explorer.exe bajo el capó. o estás diciendo que hay una manera de usar UNC sin el proveedor?
JohnZaj

11

Puede usar net usepara asignar una unidad de red a una ruta UNC y luego buscar la unidad asignada.


2
Es cierto que esta es la única forma de hacerlo desde la línea de comandos, pero tenga cuidado de usar esto para cualquier cosa, excepto los comandos desechables (es decir, las cosas que solo hace una vez) porque de lo contrario se encuentra con problemas con la unidad que no está asignada o mapeado pero no conectado, y múltiples nombres de usuario :(
Mark Henderson

1
No puede cambiar a este directorio, pero aún puede usarlo en comandos: dir \\ someserver \ stuff call \\ someserver \ stuff \ whatever.bat
Benoit

1
En realidad, es posible que pueda usar \\ someserver \ share ... solo necesita el truco del registro para hacerlo :-)
Bart Silverstrim

@BartSilverstrim, ¿cómo?
Pacerier


1

Además de mapear explícitamente una unidad para que cmdpueda hacer frente, lo que también podrían necesitar otras utilidades, también puede probar un shell de comando alternativo como PowerShell.


1

Esto funcionó para mí en Win8x64:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor]
"DisableUNCCheck"=dword:00000001

También debería poder hacer esto en HKCU, solo asegúrese de cerrar sesión y volver a iniciarla.


1

según @pk use pushd & popd, aquí hay un ejemplo.

use pushd para crear una unidad virtual temporal y, una vez hecho, haga un popd para eliminar la unidad virtual temporal

:selectFolder
REM Confirm which Folder structure
set /p location="Delete files for which QA environment: (P)retoria, (C)ape, (L)uanda or (Q)uit? (C/L/P/Q)"
REM  I option allows for upper and lower case
if /I "%location%"=="C" set folder="\\Tfwcqa\tfwcqa\EORDERS"
if /I "%location%"=="L" set folder="\\Tfluaqa\tfluaqa\EORDERS"
if /I "%location%"=="P" set folder="\\Tfptaqa\tfptaqa\EORDERS"
if /I "%location%"=="Q" goto endBatch

REM you can not cd to a network drive so we use pushd to create a temporary virtual drive
REM cd /d %folder%
pushd %folder%

DIR /S

REM popd deletes the temporary virtual drive
popd

0

¿No funcionaría el comando de unión aquí?


1
No lo creas, la unión solo funciona para directorios locales.
Berzemus

¿Funciona? Del artículo de Wikipedia: "Los puntos de unión solo pueden vincularse a directorios en un volumen local; los puntos de unión a recursos compartidos remotos no son compatibles".
Peter Mortensen

@#%!# tienes razón. Estaba pensando que era como un comando de montaje, olvidé que tenía este problema cuando lo examiné hace dos años. suspiro Lo siento ...
Bart Silverstrim

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.