web-dev-qa-db-fra.com

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

Tous les jours, je me trouve dans l'invite de commande Windows ayant besoin d'accéder à un lecteur réseau mappé mais déconnecté. Je n'ai pas encore trouvé de commande permettant de reconnecter ce lecteur sans démapper ni remapper (ce qui conduit à un jeu de recherche de mot de passe, car je ne possède pas ces ordinateurs). J'aimerais aussi pouvoir écrire un script pour que chaque nuit, le lecteur soit reconnecté s'il est déconnecté d'une manière ou d'une autre.

La solution la plus rapide que j'ai actuellement est de:

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

Je sais que c'est un inconvénient mineur, mais je le fais souvent par le biais d'une connexion lente VNC ou PCAnywhere où faire quoi que ce soit avec une interface graphique est horrible, alors je me demande simplement s'il existe une meilleure solution.

32
Stephen Jennings

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

12
wfaulk

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

( ceux-ci ne fonctionneront que dans un fichier batch )

Testé sous Win7 et XP pour actualiser les lettres de pilote "Déconnecté" et "Indisponible" dans une fenêtre de la 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
          )
     )
 )
7
Brian

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. Une ouverture 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 commande Taskkill /fi "windowtitle eq" est sensible à la casse!

7
Claus Melander

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.
6
wfaulk

Je sais que vous avez dit "Net Use" ne fonctionnait pas pour vous - mais voici ce que vous pouvez essayer.

Exécuter 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 de la passerelle utilisées dans la dernière connexion réussie. Je ne sais pas si cela résoudra votre problème, mais sa mérite d'être examiné.

4
Critical Skill

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 pas. Je n'ai pas le problème de mot de passe puisque je suis sur un réseau local d'entreprise, mais j'ai toujours l'autre aspect du problème.

J'ai créé un fichier batch appelé ex.bat et je l'ai stocké (avec beaucoup d'autres choses) dans un répertoire\util que j'ai mis dans mon chemin. Je peux taper "ex h:" et il lancera l’explorateur Windows et le configurera pour aller directement au lecteur h:. Voici le fichier batch:

start Explorer /e,/select,%1

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

Ce problème semble s’être beaucoup aggravé récemment, peut-être à cause de l’un des correctifs de sécurité Windows XP.

Une autre chose à essayer est du 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 au bout 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
2
Warren

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 permettant de mapper des lecteurs sur XP et ordinateurs Win7.

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

    dir x:
    dir z:

et définissez une tâche planifiée pour qu'elle s'exécute tous les soirs avant le programme de sauvegarde qui échouait car les lecteurs étaient parfois affichés comme étant déconnectés.

1
StanZ

TL; résumé de DR: utiliser Net Use et if exist

J'ai rencontré un problème lié 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 ), attendez le démarrage de Windows, puis établissez une connexion à un partage SMB et attendez qu'il soit présent.

Tandis que les autres réponses ici sont excellentes, je ne voulais pas que des lettres de lecteur mappées apparaissent ou disparaissent, ni pour déconnecter quoi que ce soit avec lequel l’utilisateur travaillait, ni pour que les fenêtres d’Explorer clignotent. c’est-à-dire qu’un objectif était zéro distraction de l’utilisateur .

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 Use est nécessaire si aucune connexion existante n'est présente. Je me suis heurté à certains cas où cela semblait à lui seul insuffisant pour "réveiller" le partage (par exemple, s'il existait une connexion antérieure existant dans un état déconnecté). J'ai trouvé que la directive if exists avait un effet similaire à celui des alternatives mentionnées dans d'autres réponses (comme pushd, dir, Explorer, etc.), mais elle semblait une approche plus légère.

0
rkagerer

Peut-être une vieille question, mais toujours pertinente en 2017 et Windows 10, car les partages réseau ne sont souvent pas reconnectés ou liés correctement par Windows pour différentes raisons. Sur la base de ce problème et de l’absence d’une solution réellement praticable et complète, j’ai créé un projet Github contenant une tâche de planificateur et une VBS qui résout le problème en essayant simplement de reconnecter les lecteurs 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.

Chemin du projet Github

0
thex

Si vous n'êtes pas opposé à la conservation de ces mots de passe au format 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 la nécessité de se souvenir des mots de passe.

0
MDMarra

Il suffit de taper:

Net Use H: \\server\share

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

Tapez 'NET /? USE 'pour voir toutes les options que cette commande vous donne.

0
Zoran

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 des mappages de lecteurs différents. J'ai codé ici pour fonctionner en tant que version autonome, qui exécute Net Use avant et après le code réel, de sorte que vous puissiez voir les résultats, mais il vous suffit de copier la déclaration FOR (trois lignes) dans votre code pour obtenir le résultat souhaité. résultats.

@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  
0
Charlie C