¿Se puede volver a conectar una unidad de red asignada desde la línea de comandos?

32

Diariamente me encuentro en el símbolo del sistema de Windows que necesita acceder a una unidad de red que está asignada pero desconectada. Todavía tengo que encontrar un comando que vuelva a conectar esta unidad sin desasignar y reasignar (lo que lleva a un juego de adivinar la contraseña, ya que no soy dueño de estas computadoras). También me gustaría poder escribir esto para que cada noche la unidad se vuelva a conectar si se ha desconectado de alguna manera.

La solución más rápida que tengo actualmente es:

  1. Escriba " start." para abrir el explorador,
  2. Alt- Dpara enfocar la barra de direcciones,
  3. escriba la letra de la unidad que quiero y presione Entrar, y espere a que muestre el contenido de la unidad,
  4. luego, finalmente, cierre el explorador y regrese al símbolo del sistema.

Sé que es un inconveniente menor, pero a menudo lo hago a través de una conexión lenta de VNC o PCAnywhere donde hacer algo a través de la GUI es horrible, por lo que me pregunto si hay una mejor solución.

Stephen Jennings
fuente
1
¿Qué sucede cuando `dir h: \`?
wfaulk
3
En lugar de escribir "start. <enter>" puede simplemente hacer win-E y guardar 5 pulsaciones de teclas ;-)
fretje
1
Lo "resolví" simplemente usando la ruta \\ server \ share en lugar de la unidad asignada. Simplemente puede copiar archivos si es necesario. (Ese fue mi problema)
Peterdk

Respuestas:

12

¿Quizás intentarlo pushd \\server\share?

wfaulk
fuente
2
No estoy seguro de que esto sea lo que necesito. Parece que Pushd crea letras de unidad temporales; Ya tengo una letra de unidad asignada, pero el recurso compartido está desconectado (tiene una X roja en el explorador y está etiquetado como "Unidad de red desconectada"). Quizás estoy equivocado.
Stephen Jennings, el
Sí, estaba pensando que acceder de esa manera podría hacer que el disco se reconecte. Puede usar popdpara eliminar la letra de unidad.
wfaulk
Lo intentaré la próxima vez que me encuentre con esto. Sospecho que fallará al decir que el dispositivo está en uso o conectará la letra de unidad incorrecta al recurso compartido.
Stephen Jennings, el
2
Intenté esto y realmente funcionó. Primero ejecuté pushd al recurso compartido y luego popd para desasignar la letra de unidad adicional, y encontré que la unidad asignada que quería estaba conectada nuevamente. Esto definitivamente es un voto a favor, y si no obtengo una respuesta más corta en un par de días, esto será aceptado.
Stephen Jennings
1
Todavía no tengo la capacidad de votar, pero esta respuesta no hizo nada por mí. Vea varias publicaciones a continuación para ver cuál lo hizo. También dejé un comentario allí.
prl77
8

Tengo que iniciar Windows 7 antes de poder ejecutar el programa VPN que me conecta a las unidades de red de la compañía. Por lo tanto, mis unidades de red no se vuelven a conectar automáticamente, solo abrirlas en el Explorador de Windows las vuelve a conectar.

He creado un pequeño archivo por lotes para iniciar la VPN, volver a conectar las unidades de red e iniciar algunas aplicaciones que siempre uso.

En mi archivo Batch tengo lo siguiente:

REM Connect VPN here...

REM Opens an Explorer window looking at T: forcing a reconnect
Start /min explorer t:\

timeout 3 /nobreak

REM Kill all Explorer windows beginning with "T_drive" in the title
Taskkill /fi "windowtitle eq T_drive*"

REM Finish starting up here...

exit

¡El Taskkill /fi "windowtitle eq"comando distingue entre mayúsculas y minúsculas!

Claus Melander
fuente
Gracias hombre, esta fue la única respuesta en todo este hilo que me ayudó. Por supuesto que lo voté, pero aún no tengo la capacidad de voto negativo para esas publicaciones que están por encima de ti.
prl77
Por cierto, no encuentro "taskkill" con mayúsculas y minúsculas, al menos no en Win 7 x64 con los últimos parches.
prl77
Nota: Si los parámetros anteriores de taskkill no funcionan para usted, intente usar TASKLIST / FI "IMAGENAME eq explorer.exe" / V para ver cuál es el título correcto de la ventana. Mi cadena de filtro para TASKKILL terminó siendo "windowtitle eq c $ *"
Luke
Gracias Luke por tu comentario. Realmente me ayudó
Pawel
7

cree un archivo por lotes (refreshletters.cmd) con estos comandos

( estos solo funcionarán dentro de un archivo por lotes )

Probado en Win7 y XP para actualizar las letras del controlador 'Desconectado' y 'No disponible' en una ventana de consola (línea de comando).

@echo off
net use |FIND ":" > %temp%\used.txt
FOR /F " tokens=1,2,3 delims= " %%i in (%temp%\used.txt) do (

  if %%i EQU Unavailable  (
    net use %%j %%k
    echo Activated %%j
   ) ELSE (
     if %%i EQU Disconnected (
       pushd .
       cd /d %%j
       dir . %>nul
       if NOT exist %%j\. (
          net use %%j /del /y
          net use %%j %%k
          echo Remapped %%j
          ) else (
             echo Fixed-up %%j
            )
       popd
       ) ELSE (
          echo Checked %%j
          )
     )
 )
Brian
fuente
Dado que no conocemos el nivel de experiencia del OP, puede ser una buena idea ampliar su respuesta.
Tog
net usefunciona para mí para las unidades mapeadas no disponibles en Win7. ty
Mat M
1
Todavía no tengo la capacidad de votar, pero esta respuesta no hizo nada por mí. Vea la publicación a continuación de Claus Melander que lo hizo. También dejé un comentario allí.
prl77
1
Funciona (probado con win7 x64), pero depende de la salida dependiente del idioma de net use, ya que busca Unavailable. Pero para obtener un win7 alemán Nicht verfgb, debe modificar la solución a su idioma
jeb
Esto funcionó para mí, excepto por un recurso compartido que tenía un espacio en la ruta de red ... De todos modos, terminé haciendo algunas líneas codificadas de "uso neto X: \\ compartir \ ruta" en un archivo por lotes y yo lo mantendré actualizado si alguna vez cambio las asignaciones de unidades. Esta es la mejor solución para mí porque realmente no quiero tener que abrir una ventana del Explorador para que la unidad se vuelva a conectar ...
Aaron
6

Esta es probablemente una pregunta estúpida, pero suponiendo que su unidad "desconectada" sea H :, ¿ha intentado cambiar directamente a la unidad?

Funciona para mí bajo XPSP3:

C:\>net use
New connections will be remembered.


Status       Local     Remote                    Network

-------------------------------------------------------------------------------
Disconnected H:        \\xxxxxx\wfaulk           Microsoft Windows Network
OK                     \\xxxxxxx\business        Microsoft Windows Network
The command completed successfully.


C:\>h:

H:\>net use
New connections will be remembered.


Status       Local     Remote                    Network

-------------------------------------------------------------------------------
OK           H:        \\xxxxxx\wfaulk           Microsoft Windows Network
OK                     \\xxxxxxx\business        Microsoft Windows Network
The command completed successfully.
wfaulk
fuente
2
El símbolo del sistema no le permite cambiar a una unidad de red que está actualmente desconectada. Al menos no en los cientos de computadoras en las que estoy usando esto (WinNT, Win2k, WinXP, WinXP Embedded).
Stephen Jennings
1
Extraño. Juro que me funciona.
wfaulk
¡A mi también me funciona!
Snark
Admito que he visto este trabajo ocasionalmente, pero la mayoría de las veces no. No sé qué determina de una forma u otra, posiblemente si hay credenciales guardadas o no.
Stephen Jennings
1
Oh, apuesto a que es eso. Me autentico automáticamente con mis credenciales de dominio.
wfaulk
4

Sé que dijiste que el "uso neto" no funcionó para ti, pero esto es lo que puedes probar.

Ejecute un archivo por lotes con la opción de uso neto / SUPRIMIR para eliminar las conexiones existentes / persistentes. Y luego podría usar el uso neto con la opción / SAVECRED para reutilizar las credenciales passowd utilizadas en el último inicio de sesión exitoso. No estoy seguro de si esto resolverá su problema, pero vale la pena investigarlo.

Habilidad critica
fuente
Esto no es exactamente lo que necesito, pero definitivamente es algo útil para saber. Esto resuelve otro problema que he tenido.
Stephen Jennings
2

Tengo el mismo problema con varias conexiones, y es intermitente. Cuando reinicio la computadora, a veces la conexión es "buena" y otras no. No tengo el problema de la contraseña ya que estoy en una LAN de la empresa, pero aún tengo el otro aspecto del problema.

Creé un archivo por lotes llamado ex.bat y lo almacené (junto con muchas otras cosas) en un directorio \ util que puse en mi ruta. Puedo escribir "ex h:" y ejecutará el Explorador de Windows y lo configurará para ir directamente a la unidad h:. Aquí está el archivo por lotes:

start explorer /e,/select,%1

Esto funciona, con muchas menos pulsaciones de teclas. O si no funciona al principio, presione la tecla Intro para abrir la carpeta raíz h: y mostrar el contenido. O escriba "ex h: \ sub" donde existe la subcarpeta "sub".

Este problema parece haber empeorado mucho recientemente, quizás debido a uno de los parches de seguridad de Windows XP.

Otra cosa para probar es en el lado del servidor. En los servidores de Windows, se supone que modificar una clave del Registro evita que el servidor desconecte sus conexiones en un tiempo de espera. Hago esto en casi todos nuestros servidores. El archivo es:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters]
"autodisconnect"=dword:ffffffff
Madriguera
fuente
Desde un proceso ejecutado como otro usuario, start explorersolo funcionaría si ambos usuarios tienen la configuración "Ejecutar ventanas de carpeta en un proceso separado".
ivan_pozdeev
1

Tuve un problema similar y descubrí que podía forzar una reconexión con un simple "dir x:" desde la línea de comando (donde X: era la unidad asignada pero desconectada). Esto era de un sistema Server 2003 para asignar unidades en XP y Win7 ordenadores.

Creé un archivo por lotes, wake_network_drives.bat, con estas dos líneas:

    dir x:
    dir z:

y configure una tarea programada para ejecutarla todas las noches antes del programa de respaldo que estaba fallando porque las unidades ocasionalmente se mostraban desconectadas.

StanZ
fuente
Esto funciona. Incluso si el dircomando le da un error, tiende a activar la unidad de red desconectada. Esta es la mejor respuesta de todas.
Elliot Cameron
0

Sólo tipo:

NET USE H: \\server\share

(donde H: es su letra de unidad, por supuesto)

Escriba 'NET /? USE 'para ver todas las opciones que le da este comando.

Zoran
fuente
Esto no funciona. La letra de la unidad ya está asignada, solo está desconectada (generalmente la otra computadora se reinicia). Cuando ejecuta esto, se queja de que el dispositivo ya está en uso.
Stephen Jennings, el
Sí, lo probé hace un momento y obtuve el "Nombre del dispositivo local que ya está en uso".
Stephen Jennings, el
1
Funciona para mí ... pero estoy en Windows 7, y en realidad la unidad se vuelve a conectar por sí misma ... Pruebe NET USE H: simple (sin la ruta), eso debería hacer que la conexión vuelva a funcionar. Olvidé cómo solía ser en XP.
Zoran
0

Si no se opone a mantener estas contraseñas en texto sin formato en un lote, puede realizar una secuencia de comandos para eliminar y reasignar, incluidas las credenciales.

net use H: /delete
net use H: \\server\share /user:domain\user password /persistent:yes

Sé que no cumple con su requisito de no eliminar el recurso compartido, pero resuelve la raíz del problema de tener que recordar las contraseñas.

MDMarra
fuente
Como profesional de TI, me opongo , tanto para mí como para mis usuarios.
ivan_pozdeev
0

TL; resumen DR: uso net useyif exist

Me encontré con un problema relacionado al crear un script de copia de seguridad nocturno. Tenía que verificar si una computadora estaba encendida (usando ping), enviar un paquete mágico para encenderla si fuera necesario (usando MC-WOL ), esperar a que Windows arranque, luego establecer una conexión a un recurso compartido SMB y esperar Ser presente.

Si bien otras respuestas aquí son geniales, no quería que las letras de unidad mapeadas aparecieran o desaparecieran, o desconectara cualquier cosa con la que el usuario pudiera estar trabajando, ni que las ventanas del Explorador parpadearan. es decir, un objetivo era cero distracción del usuario .

Aquí hay un fragmento de código que puede serle útil:

set TARGET_IP=192.168.1.3
set TARGET_PATH=\\%TARGET_IP%\d$\backups
set ATTEMPTS=0

:LOOP

REM Give up eventually
if %ATTEMPTS% GEQ 200 goto NOJOY

REM Wait for IP connectivity to host, and/or burn up a couple seconds before retry
ping -n 1 -w 2000 %TARGET_IP% | find "TTL" > nul
if errorlevel 1 set /a ATTEMPTS+=1 & goto LOOP

REM See if we're already connected, and try to give it a kick
if exist %TARGET_PATH% goto CONNECTED

REM Try to reconnect
net use %TARGET_PATH% > nul
if errorlevel 1 set /a ATTEMPTS+=1 & goto LOOP

:CONNECTED
echo Connected
exit /b

:NOJOY
echo Couldn't connect

Si lo prefiere, puede reemplazar la dirección IP anterior con un nombre de host (por ejemplo server1).

net usees necesario en caso de que no exista una conexión existente. Me encontré con algunos casos en los que solo parecía insuficiente para "despertar" el recurso compartido (por ejemplo, si existía una conexión previa en un estado desconectado). Me pareció que la if existsDirectiva tiene un efecto similar al de las alternativas mencionadas en otras respuestas (como pushd, dir, Explorer, etc), pero parecía un enfoque más ligero.

rkagerer
fuente
0

La respuesta de StanZ funcionó para mí, pero tenía que poder determinar programáticamente cualquier unidad asignada sin un estado de OK, ya que los usuarios en nuestro dominio obtienen diferentes asignaciones de unidad. Codifiqué aquí para que se ejecute como una versión independiente, que se ejecuta net useantes y después del código real, para que pueda ver los resultados, pero solo necesita copiar la FORdeclaración (tres líneas) en su código para obtener los resultados deseados.

@ECHO OFF
::  
:: revision of answer from StanZ on superuser.com at the following url  
:: https://superuser.com/questions/52595/can-a-mapped-network-drive-be-reconnected-from-the-command-line/367910#367910  
:: https://superuser.com/a/367910  
:: which resulted in my  
::  
:: DriveStatusOK.bat  
:: iCharlieC  
::  
SETLOCAL ENABLEEXTENSIONS  
::  
:: you need only copy the one FOR statement (three lines)  
::   to use in your own code  
::   to force status of mapped network drives to OK  
::  
:: "tokens=1-2 delims=: " is used in the for statement  
:: to output only the drive letter from the output of...  
:: net use  
:: is piped to the first findstr which outputs only lines with drive letters  
::   then piped to another findstr to eliminate drives with a status of OK  
::   then piped to another findstr to get lines that start with a status  
::     -in other words, those lines that the first character is a letter-  
::     -this due to the fact that in our domain we have a drive  
::      that is mapped to a letter, but never has a status.  
::      I do not know the reason for this,  
::      but adding that last findstr prevents me from getting an error  
::      from trying to execute a dir on a non-existant drive letter.-  
::   then dir is executed on each drive letter (after appending ":\" to the letter)  
::      and the output redirected to NUL  
::  
:: run net use before as a visual here  
net use  
::  
FOR /F "tokens=1-2 delims=: " %%i in (  
    'net use ^| findstr ":" ^| findstr /i /v "^OK" ^| findstr /i "^[A-Z]"'  
    ) do dir "%%j:" > NUL  
::  
:: run net use after "waking" drive(s)  
net use  
::  
ENDLOCAL  
Charlie C
fuente
0

Tal vez una pregunta anterior, pero aún relevante en 2017 y Windows 10 porque los recursos compartidos de red a menudo no se vuelven a conectar o adjuntar correctamente por Windows por diferentes razones. Sobre la base de este problema y la ausencia de una solución real y práctica que funcione, creé un proyecto Github que contiene una Tarea de Programador y un VBS que resuelve el problema simplemente tratando de volver a conectar las unidades después de reanudar o iniciar sesión si no está conectado o en línea.

El script es totalmente configurable y se puede configurar según las necesidades del usuario real.

Camino al proyecto Github

thex
fuente