Un lecteur réseau mappé peut-il être reconnecté à partir de la ligne de commande?

32

Au quotidien, je me retrouve dans l'invite de commande Windows devant accéder à un lecteur réseau mappé mais déconnecté. Je n'ai pas encore trouvé de commande qui reconnectera ce disque sans démapper et remapper (ce qui conduit à un jeu de devinettes de mot de passe, car je ne possède pas ces ordinateurs). Je voudrais également pouvoir l'écrire afin que chaque soir le disque soit reconnecté s'il est déconnecté d'une manière ou d'une autre.

La solution la plus rapide que j'ai actuellement consiste à:

  1. Tapez " start." pour ouvrir l'explorateur,
  2. Alt- Dpour focaliser la barre d'adresse,
  3. tapez la lettre de lecteur que je veux et appuyez sur Entrée, et attendez qu'elle affiche le contenu du lecteur,
  4. puis enfin, fermez l'explorateur et revenez à l'invite de commande.

Je sais que c'est un inconvénient mineur, mais je le fais souvent via une connexion lente VNC ou PCAnywhere où faire quoi que ce soit via GUI est horrible, donc je me demande simplement s'il y a une meilleure solution.

Stephen Jennings
la source
1
Que se passe-t-il lorsque vous `dir h: \`?
wfaulk
3
Au lieu de taper "start. <enter>", vous pouvez simplement faire win-E et enregistrer 5 frappes ;-)
fretje
1
Je l'ai "résolu" en utilisant simplement le chemin d'accès \\ serveur \ partage au lieu du lecteur mappé. Vous pouvez simplement copier des fichiers si vous en avez besoin. (C'était mon problème)
Peterdk

Réponses:

12

Peut-être essayer pushd \\server\share?

wfaulk
la source
2
Je ne suis pas sûr que ce soit ce dont j'ai besoin. Pushd semble créer des lettres de lecteur temporaires; J'ai déjà une lettre de lecteur mappée, mais le partage est déconnecté (il a un X rouge dans l'explorateur et est étiqueté "Lecteur réseau déconnecté"). Je me trompe peut-être.
Stephen Jennings
Ouais, je pensais que l'accès de cette façon pourrait pousser le lecteur à se reconnecter. Vous pouvez utiliser popdpour supprimer la lettre de lecteur.
wfaulk
Je vais l'essayer la prochaine fois que je rencontre cela. Je pense qu'il échouera soit en disant que le périphérique est en cours d'utilisation, soit en connectant la mauvaise lettre de lecteur au partage.
Stephen Jennings
2
J'ai essayé et cela a fonctionné. J'ai d'abord exécuté pushd sur le partage, puis popd pour démapper la lettre de lecteur supplémentaire, et j'ai trouvé que le lecteur mappé que je voulais était à nouveau connecté. C'est certainement un vote positif, et si je n'obtiens pas de réponse plus courte dans quelques jours, cela sera accepté.
Stephen Jennings
1
Je n'ai pas encore de capacité de vote en aval, mais cette réponse n'a rien fait pour moi. Voir plusieurs articles ci-dessous pour voir lequel l'a fait. J'y ai également laissé un commentaire.
prl77
8

Je dois démarrer Windows 7 avant de pouvoir exécuter le programme VPN qui me connecte aux lecteurs réseau de l'entreprise. Par conséquent, mes lecteurs réseau ne se reconnectent pas automatiquement, seuls les ouvrir dans l'Explorateur Windows les reconnecte.

J'ai créé un petit fichier de commandes pour démarrer le VPN, reconnecter les lecteurs réseau et démarrer certaines applications que j'utilise toujours.

Dans mon fichier batch, j'ai les éléments suivants:

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

La Taskkill /fi "windowtitle eq"commande est sensible à la casse!

Claus Melander
la source
Merci mec, c'était la seule réponse sur tout ce fil qui m'a aidé. Bien sûr, je l'ai voté, mais je n'ai pas encore de capacité de downvote pour les messages au-dessus de vous.
prl77
Btw, je ne trouve pas "taskkill" ayant la sensibilité à la casse, du moins pas sur Win 7 x64 avec les derniers correctifs.
prl77
Remarque: Si les paramètres de tâche ci-dessus ne fonctionnent pas pour vous, essayez d'utiliser TASKLIST / FI "IMAGENAME eq explorer.exe" / V pour voir quel est le titre correct de la fenêtre. Ma chaîne de filtre pour TASKKILL a fini par être "windowtitle eq c $ *"
Luke
Thx Luke pour votre commentaire. Cela m'a vraiment aidé
Pawel
7

créer un fichier batch (refreshletters.cmd) avec ces commandes

( ceux-ci ne fonctionneront qu'à l'intérieur d'un fichier batch )

Testé sur Win7 et XP pour actualiser les lettres de pilote «Déconnecté» et «Non disponible» dans une fenêtre de console (ligne de commande).

@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
la source
Étant donné que nous ne connaissons pas le niveau d'expertise du PO, il peut être judicieux de développer votre réponse.
Tog
net usefonctionne pour moi pour les lecteurs mappés non disponibles dans Win7. ty
Mat M
1
Je n'ai pas encore de capacité de vote en aval, mais cette réponse n'a rien fait pour moi. Voir le post ci-dessous de Claus Melander qui l'a fait. J'y ai également laissé un commentaire.
prl77
1
Cela fonctionne (testé avec win7 x64), mais cela dépend de la sortie dépendante de la langue de net use, comme il recherche Unavailable. Mais pour un allemand win7 que vous obtenez Nicht verfgb, vous devez modifier la solution dans votre langue
jeb
Cela a fonctionné pour moi, sauf pour un partage qui avait un espace dans le chemin d'accès au réseau ... Quoi qu'il en soit, je viens de finir par faire quelques lignes codées en dur "net use X: \\ share \ path" dans un fichier de commandes et j'ai le tiendra à jour si jamais je change les mappages de lecteur. C'est la meilleure solution pour moi parce que je ne veux vraiment pas avoir à ouvrir une fenêtre d'explorateur pour que le disque se reconnecte ...
Aaron
6

C'est probablement une question stupide, mais en supposant que votre lecteur "déconnecté" est H :, avez-vous essayé de passer directement au lecteur?

Cela fonctionne pour moi sous 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
la source
2
L'invite de commandes ne vous permet pas de basculer vers un lecteur réseau actuellement déconnecté. Du moins pas sur les centaines d'ordinateurs sur lesquels j'utilise ceci (WinNT, Win2k, WinXP, WinXP Embedded).
Stephen Jennings
1
Bizarre. Je jure que ça marche pour moi.
wfaulk
ça marche aussi pour moi!
Snark
J'avoue avoir vu ce travail de temps en temps, mais la plupart du temps ce n'est pas le cas. Je ne sais pas ce qui détermine d'une manière ou d'une autre, peut-être s'il y a ou non des informations d'identification enregistrées.
Stephen Jennings
1
Oh, je parie que c'est ça. Je m'authentifie automatiquement à l'aide de mes informations d'identification de domaine.
wfaulk
4

Je sais que vous avez dit que "l'utilisation nette" ne fonctionnait pas pour vous - mais voici ce que vous pourriez essayer.

Exécutez un fichier de commandes avec l'option net use / DELETE pour supprimer les connexions existantes / persistantes. Vous pouvez ensuite utiliser net use avec l'option / SAVECRED pour réutiliser les informations d'identification passowd utilisées lors de la dernière connexion réussie. Je ne sais pas si cela résoudra votre problème, mais cela vaut la peine d'être étudié.

Compétence critique
la source
Ce n'est pas tout à fait ce dont j'ai besoin, mais c'est certainement une chose utile à savoir. Cela résout un autre problème que j'ai eu.
Stephen Jennings
2

J'ai le même problème avec plusieurs connexions, et c'est intermittent. Lorsque je redémarre l'ordinateur, la connexion est parfois «bonne» et parfois non. Je n'ai pas le problème de mot de passe car je suis sur un réseau local d'entreprise, mais j'ai toujours l'autre aspect du problème.

J'ai créé un fichier de commandes appelé ex.bat et l'ai stocké (avec bien d'autres choses) dans un répertoire \ util que j'ai mis dans mon chemin. Je peux taper "ex h:" et il exécutera l'Explorateur Windows et le configurera pour aller directement sur le lecteur h :. Voici le fichier batch:

start explorer /e,/select,%1

Cela fonctionne, avec beaucoup moins de touches. Ou si cela ne fonctionne pas au début, appuyez sur la touche Entrée pour ouvrir le dossier racine h: et afficher le contenu. Ou, tapez "ex h: \ sub" là où le sous-dossier "sub" existe.

Ce problème semble s'être aggravé récemment, peut-être en raison de l'un des correctifs de sécurité de Windows XP.

Une autre chose à essayer est côté serveur. Sur les serveurs Windows, la modification d'une clé de Registre est censée empêcher le serveur de déconnecter ses connexions lors d'un délai d'attente. Je le fais sur à peu près tous nos serveurs. Le fichier est:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters]
"autodisconnect"=dword:ffffffff
Garenne
la source
À partir d'un processus exécuté en tant qu'un autre utilisateur, start explorerne fonctionnerait que si les deux utilisateurs ont le paramètre «Exécuter les fenêtres de dossier dans un processus distinct».
ivan_pozdeev
1

J'ai eu un problème similaire et j'ai découvert que je pouvais forcer une reconnexion avec un simple "dir x:" à partir de la ligne de commande (où X: était le lecteur mappé mais déconnecté.) Il s'agissait d'un système Server 2003 à des lecteurs mappés sur XP et Win7 des ordinateurs.

J'ai créé un fichier batch, wake_network_drives.bat, avec ces deux lignes:

    dir x:
    dir z:

et définissez une tâche planifiée pour l'exécuter tous les soirs avant le programme de sauvegarde qui échouait car les disques étaient parfois affichés comme déconnectés.

StanZ
la source
Cela marche. Même si la dircommande vous donne une erreur, elle a tendance à réveiller le lecteur réseau déconnecté. C'est la meilleure réponse de tous.
Elliot Cameron
0

Tapez simplement:

NET USE H: \\server\share

(où H: est bien sûr votre lettre de lecteur)

Tapez 'NET /? UTILISER 'pour voir toutes les options que cette commande vous offre.

Zoran
la source
Cela ne fonctionne pas. La lettre de lecteur est déjà mappée, elle est juste déconnectée (généralement l'autre ordinateur a été redémarré). Lorsque vous l'exécutez, il se plaint que l'appareil est déjà utilisé.
Stephen Jennings,
Oui, je l'ai testé tout à l'heure et j'ai obtenu "Nom du périphérique local déjà utilisé".
Stephen Jennings
1
Cela fonctionne pour moi ... mais je suis sur Windows 7, et en fait le disque se reconnecte par lui-même ... Essayez NET USE H: simple (sans le chemin), cela devrait rétablir la connexion. J'oublie comment c'était sous XP.
Zoran
0

Si vous n'êtes pas opposé à conserver ces mots de passe en texte brut dans un lot, vous pouvez créer un script de suppression et de remappage, y compris les informations d'identification.

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

Je sais que cela ne répond pas à votre exigence de ne pas supprimer le partage, mais cela résout la racine du problème de devoir se souvenir des mots de passe.

MDMarra
la source
En tant que IT pro, je suis opposé, à la fois pour moi et pour mes utilisateurs.
ivan_pozdeev
0

Résumé TL; DR: utilisation net useetif exist

J'ai rencontré un problème connexe lors de la création d'un script de sauvegarde nocturne. Il devait vérifier si un ordinateur était allumé (en utilisant ping), envoyer un paquet magique pour l'allumer si nécessaire (en utilisant MC-WOL ), attendre que Windows démarre, puis établir une connexion à un partage SMB et l'attendre être présente.

Bien que les autres réponses ici soient excellentes, je ne voulais pas que des lettres de lecteur mappées apparaissent / disparaissent, ni déconnecter tout ce avec quoi l'utilisateur pourrait travailler, ni que les fenêtres de l'Explorateur clignotent. c.-à-d. Un objectif était zéro distraction des utilisateurs .

Voici un morceau de code qui peut vous être utile:

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 vous préférez, vous pouvez remplacer l'adresse IP ci-dessus par un nom d'hôte (par exemple server1).

net useest nécessaire dans le cas où aucune connexion existante n'est présente. Je suis tombé sur des cas d'angle où cela seul semblait insuffisant pour «réveiller» le partage (par exemple, s'il existait une connexion antérieure dans un état déconnecté). Je trouve la if existsdirective a un effet similaire que les alternatives mentionnées dans d' autres réponses (comme pushd, dir, Explorer, etc.), mais il semblait une approche plus légère.

rkagerer
la source
0

La réponse de StanZ a fonctionné pour moi, mais je devais être en mesure de déterminer par programme tous les lecteurs mappés sans statut OK, car les utilisateurs de notre domaine obtiennent différents mappages de lecteurs. J'ai codé ici pour fonctionner comme une version autonome, qui s'exécute net useavant et après le code réel, afin que vous puissiez voir les résultats, mais vous n'avez qu'à copier la seule FORinstruction (trois lignes) dans votre code pour obtenir les résultats souhaités.

@ECHO OFF
::  
:: revision of answer from StanZ on superuser.com at the following url  
:: /superuser/52595/can-a-mapped-network-drive-be-reconnected-from-the-command-line/367910#367910  
:: /superuser//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
la source
0

Peut-être une vieille question, mais toujours d'actualité en 2017 et Windows 10, car les partages réseau ne sont souvent pas reconnectés ou attachés correctement par Windows pour différentes raisons. Sur la base de ce problème et de l'absence d'une véritable solution de travail praticable et complète, j'ai créé un projet Github qui contient une tâche de planificateur et un VBS qui résout le problème en essayant simplement de reconnecter les disques après la reprise ou la connexion s'ils ne sont pas connectés ou en ligne.

Le script est entièrement configurable et peut être configuré en fonction des besoins de l'utilisateur réel.

Chemin vers le projet Github

thex
la source