Kann ein zugeordnetes Netzlaufwerk über die Befehlszeile erneut verbunden werden?

32

Täglich finde ich mich in der Windows-Eingabeaufforderung wieder, die auf ein Netzlaufwerk zugreifen muss, das zugeordnet, aber nicht verbunden ist. Ich habe noch keinen Befehl gefunden, mit dem dieses Laufwerk wieder verbunden werden kann, ohne die Zuordnung aufzuheben oder neu zuzuordnen (was zu einem Spiel zum Erraten von Passwörtern führt, da ich diese Computer nicht besitze). Ich möchte auch in der Lage sein, dies zu skripten, damit das Laufwerk jede Nacht neu verbunden wird, wenn es irgendwie getrennt wurde.

Die schnellste Lösung, die ich derzeit habe, ist:

  1. Geben Sie " start." ein, um den Explorer zu öffnen.
  2. Alt- Dum die Adressleiste zu fokussieren,
  3. Geben Sie den gewünschten Laufwerksbuchstaben ein und drücken Sie die Eingabetaste. Warten Sie, bis der Laufwerksinhalt angezeigt wird.
  4. Schließen Sie anschließend den Explorer und kehren Sie zur Eingabeaufforderung zurück.

Ich weiß, es ist eine kleine Unannehmlichkeit, aber ich mache dies oft über eine langsame VNC- oder PCAnywhere-Verbindung, bei der es schrecklich ist, irgendetwas über die GUI zu tun. Deshalb frage ich mich nur, ob es eine bessere Lösung gibt.

Stephen Jennings
quelle
1
Was passiert, wenn Sie "dir h:"?
Wfaulk
3
Anstatt "start. <Enter>" einzugeben, können Sie einfach win-E
ausführen
1
Ich habe es "gelöst", indem ich nur den Pfad \\ Server \ Freigabe anstelle des zugeordneten Laufwerks verwendet habe. Sie können nur Dateien kopieren, wenn Sie müssen. (Das war mein Problem)
Peterdk

Antworten:

12

Vielleicht versuchen pushd \\server\share?

wfaulk
quelle
2
Ich bin mir nicht sicher, ob ich das brauche. Pushd erstellt scheinbar temporäre Laufwerksbuchstaben. Ich habe bereits einen Laufwerksbuchstaben zugeordnet, aber die Freigabe ist nicht verbunden (im Explorer ist ein rotes X und die Bezeichnung "Disconnected Network Drive" (Nicht verbundenes Netzlaufwerk) angegeben). Vielleicht irre ich mich.
Stephen Jennings
Ja, ich dachte, dass der Zugriff auf diese Weise das Laufwerk dazu veranlassen könnte, erneut eine Verbindung herzustellen. Mit können Sie popdden Laufwerksbuchstaben entfernen.
wfaulk
Ich werde es das nächste Mal versuchen, wenn ich darauf stoße. Ich vermute, es schlägt entweder fehl, wenn das Gerät verwendet wird, oder es wird ein falscher Laufwerksbuchstabe mit der Freigabe verbunden.
Stephen Jennings
2
Ich habe es versucht und es hat tatsächlich funktioniert. Ich ließ zuerst pushd zur Freigabe laufen, dann popd, um den zusätzlichen Laufwerksbuchstaben zu entfernen, und ich fand, dass das zugeordnete Laufwerk, das ich wollte, wieder verbunden war. Dies ist definitiv eine Aufwertung, und wenn ich in ein paar Tagen keine kürzere Antwort bekomme, wird dies akzeptiert.
Stephen Jennings
1
Ich habe noch keine Downvoting-Fähigkeit, aber diese Antwort hat nichts für mich getan. Sehen Sie sich die folgenden Beiträge an, um zu sehen, welche es getan haben. Ich habe dort auch einen Kommentar hinterlassen.
prl77
8

Ich muss Windows 7 starten, bevor ich das VPN-Programm ausführen kann, das mich mit den Netzwerklaufwerken des Unternehmens verbindet. Aus diesem Grund stellen meine Netzlaufwerke die Verbindung nicht automatisch wieder her, sondern öffnen sie nur im Windows Explorer.

Ich habe eine kleine Batch-Datei erstellt, um das VPN zu starten, die Netzlaufwerke erneut zu verbinden und einige Anwendungen zu starten, die ich immer verwende.

In meiner Batch-Datei habe ich Folgendes:

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

Der Taskkill /fi "windowtitle eq"Befehl unterscheidet zwischen Groß- und Kleinschreibung!

Claus Melander
quelle
Danke Mann, das war die einzige Antwort auf diesen ganzen Thread, die mir geholfen hat. Natürlich habe ich es hochgestuft, aber ich habe noch keine Downvote-Fähigkeit für diese Posts über Ihnen.
prl77
Übrigens finde ich "taskkill" nicht mit Groß- und Kleinschreibung, zumindest nicht unter Win 7 x64 mit den neuesten Patches.
prl77
Hinweis: Wenn die obigen Taskkill-Parameter für Sie nicht funktionieren, versuchen Sie, mithilfe von TASKLIST / FI "IMAGENAME eq explorer.exe" / V den korrekten Fenstertitel zu ermitteln. Meine Filterzeichenfolge für TASKKILL lautete schließlich "windowtitle eq c $ *"
Luke
Danke Luke für deinen Kommentar. Es hat mir sehr geholfen
Pawel
7

Erstellen Sie eine Batch-Datei (refreshletters.cmd) mit diesen Befehlen

( Diese funktionieren nur in einer Batch-Datei )

Getestet unter Win7 und XP, um die Treiberbuchstaben "Getrennt" und "Nicht verfügbar" in einem Konsolenfenster (Befehlszeile) zu aktualisieren.

@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
quelle
Da wir das Fachwissen des OP nicht kennen, ist es möglicherweise eine gute Idee, Ihre Antwort zu erweitern.
Tog
net usefunktioniert bei mir für nicht verfügbare zugeordnete Laufwerke in Win7. ty
Mat M
1
Ich habe noch keine Downvoting-Fähigkeit, aber diese Antwort hat nichts für mich getan. Siehe den folgenden Beitrag von Claus Melander. Ich habe dort auch einen Kommentar hinterlassen.
prl77
1
Es funktioniert (getestet mit win7 x64), hängt jedoch von der sprachabhängigen Ausgabe ab net use, nach der gesucht wird Unavailable. Aber für einen deutschen win7 müssen Sie Nicht verfgbdie Lösung an Ihre Sprache
anpassen
Dies funktionierte für mich, mit Ausnahme einer Freigabe, die ein Leerzeichen im Netzwerkpfad hatte ... Wie auch immer, ich habe gerade einige hartcodierte "net use X: \\ share \ path" -Zeilen in einer Batch-Datei ausgeführt und ich Ich werde es auf dem neuesten Stand halten, falls ich jemals die Laufwerkszuordnungen ändere. Dies ist die beste Lösung für mich, da ich wirklich kein Explorer-Fenster öffnen muss, um die Verbindung zum Laufwerk wiederherzustellen ...
Aaron
6

Dies ist wahrscheinlich eine dumme Frage, aber wenn Ihr "nicht verbundenes" Laufwerk H: ist, haben Sie versucht, einfach direkt auf das Laufwerk zu wechseln?

Es funktioniert bei mir unter 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
quelle
2
Mit der Eingabeaufforderung können Sie nicht zu einem Netzwerklaufwerk wechseln, das gerade nicht verbunden ist. Zumindest nicht auf den Hunderten von Computern, auf denen ich dies verwende (WinNT, Win2k, WinXP, WinXP Embedded).
Stephen Jennings
1
Seltsam. Ich schwöre, es funktioniert bei mir.
Wfaulk
es funktioniert auch bei mir!
Snark
Ich gebe zu, ich habe diese Arbeit gelegentlich gesehen, aber meistens nicht. Ich weiß nicht, was auf die eine oder andere Weise entscheidet, ob möglicherweise Anmeldeinformationen gespeichert sind oder nicht.
Stephen Jennings
1
Oh, ich wette das ist es. Ich authentifiziere mich automatisch mit meinen Domain-Anmeldeinformationen.
wfaulk
4

Ich weiß, dass Sie gesagt haben, dass "net use" für Sie nicht funktioniert hat - aber hier ist, was Sie versuchen könnten.

Führen Sie eine Batchdatei mit der Option net use / DELETE aus, um die vorhandenen / persistenten Verbindungen zu entfernen. Anschließend können Sie net use mit der Option / SAVECRED verwenden, um die bei der letzten erfolgreichen Anmeldung verwendeten Berechtigungsnachweise für das Kennwort erneut zu verwenden. Ich bin mir nicht sicher, ob dies Ihr Problem angeht, aber es lohnt sich, es zu untersuchen.

Kritische Fertigkeit
quelle
Das ist nicht ganz das, was ich brauche, aber das ist definitiv eine nützliche Sache zu wissen. Dies löst ein weiteres Problem, das ich hatte.
Stephen Jennings
2

Ich habe das gleiche Problem mit mehreren Verbindungen, und es ist zeitweise. Wenn ich den Computer neu starte, ist die Verbindung manchmal "gut" und manchmal nicht. Ich habe kein Passwortproblem, da ich in einem Firmen-LAN bin, aber ich habe immer noch den anderen Aspekt des Problems.

Ich habe eine Batch-Datei mit dem Namen ex.bat erstellt und sie (zusammen mit vielen anderen Dingen) in einem \ util-Verzeichnis gespeichert, das ich in meinen Pfad eingefügt habe. Ich kann "ex h:" eingeben und es wird Windows Explorer ausgeführt und so eingestellt, dass es direkt zum Laufwerk h: wechselt. Hier ist die Batch-Datei:

start explorer /e,/select,%1

Dies funktioniert mit viel weniger Tastenanschlägen. Wenn dies zunächst nicht funktioniert, drücken Sie die Eingabetaste, um den Ordner h: root zu öffnen und den Inhalt anzuzeigen. Oder geben Sie "ex h: \ sub" ein, in dem sich der Unterordner "sub" befindet.

Dieses Problem scheint sich in letzter Zeit erheblich verschlimmert zu haben, möglicherweise aufgrund eines der Windows XP-Sicherheitspatches.

Eine andere Sache zu versuchen ist auf der Serverseite. Auf Windows-Servern soll das Ändern eines Registrierungsschlüssels verhindern, dass der Server seine Verbindungen während einer Zeitüberschreitung trennt. Ich mache das auf so ziemlich allen unseren Servern. Die Datei ist:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters]
"autodisconnect"=dword:ffffffff
Labyrinth
quelle
start explorerWenn ein Prozess als ein anderer Benutzer ausgeführt wird, funktioniert dies nur, wenn beide Benutzer die Einstellung "Ordnerfenster in einem separaten Prozess ausführen " verwenden.
ivan_pozdeev
1

Ich hatte ein ähnliches Problem und stellte fest, dass ich eine erneute Verbindung mit einem einfachen "dir x:" über die Befehlszeile erzwingen konnte (wobei X: das zugeordnete, aber nicht verbundene Laufwerk war.). Dies war von einem Server 2003-System auf zugeordnete Laufwerke unter XP und Win7 Computers.

Ich habe die Batch-Datei wake_network_drives.bat mit den folgenden zwei Zeilen erstellt:

    dir x:
    dir z:

und legen Sie eine geplante Task fest, die jede Nacht vor dem fehlgeschlagenen Sicherungsprogramm ausgeführt wird, da die Laufwerke gelegentlich als nicht verbunden angezeigt wurden.

StanZ
quelle
Das funktioniert. Selbst wenn der dirBefehl eine Fehlermeldung ausgibt, wird das nicht verbundene Netzlaufwerk in der Regel aufgeweckt. Dies ist die beste Antwort von allen.
Elliot Cameron
0

Tipp einfach:

NET USE H: \\server\share

(wobei H: natürlich Ihr Laufwerksbuchstabe ist)

Geben Sie 'NET /? Mit 'werden alle Optionen angezeigt, die dieser Befehl bietet.

Zoran
quelle
Das funktioniert nicht. Der Laufwerksbuchstabe ist bereits zugeordnet, die Verbindung wurde nur getrennt (normalerweise wurde der andere Computer neu gestartet). Wenn Sie dies ausführen, wird beanstandet, dass das Gerät bereits verwendet wird.
Stephen Jennings
Ja, ich habe dies gerade getestet und "Lokaler Gerätename bereits verwendet" erhalten.
Stephen Jennings
1
Es funktioniert für mich ... aber ich arbeite unter Windows 7 und tatsächlich stellt das Laufwerk die Verbindung von selbst wieder her ... Probieren Sie NET USE H: einfach (ohne Pfad), das sollte die Verbindung wieder herstellen. Ich habe vergessen, wie es früher in XP war.
Zoran
0

Wenn Sie nicht dagegen sind, diese Kennwörter in einem Stapel im Klartext zu speichern, können Sie ein Skript zum Löschen und erneuten Zuordnen einschließlich Anmeldeinformationen erstellen.

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

Ich weiß, dass es nicht Ihrer Anforderung entspricht, die Freigabe nicht zu löschen, aber es löst die Wurzel des Problems, sich Kennwörter merken zu müssen.

MDMarra
quelle
Als IT-Profi bin ich sowohl für mich als auch für meine Benutzer dagegen.
ivan_pozdeev
0

TL; DR Zusammenfassung: Verwenden Sie net useundif exist

Beim Erstellen eines nächtlichen Backup-Skripts ist ein ähnliches Problem aufgetreten. Es musste überprüfen, ob ein Computer eingeschaltet war (mithilfe von Ping), ein Magic Packet senden, um ihn bei Bedarf einzuschalten (mithilfe von MC-WOL ), warten, bis Windows gestartet war, dann eine Verbindung zu einer SMB-Freigabe herstellen und warten präsent sein.

Während andere Antworten hier großartig sind, wollte ich nicht, dass zugeordnete Laufwerksbuchstaben ein- oder ausgeblendet werden oder dass die Verbindung zu etwas getrennt wird, mit dem der Benutzer möglicherweise arbeitet, oder dass Explorer-Fenster blinken. Ein Ziel war also keine Ablenkung durch den Benutzer .

Hier ist ein Teil des Codes, der für Sie hilfreich sein kann:

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

Wenn Sie möchten, können Sie die oben angegebene IP-Adresse durch einen Hostnamen (z server1. B. ) ersetzen .

net usewird benötigt, falls keine bestehende Verbindung besteht. Ich stieß auf einige Eckfälle, in denen es nicht ausreichend schien, die Freigabe "aufzuwecken" (z. B. wenn eine vorherige Verbindung in einem getrennten Zustand bestand). Ich fand die if existsRichtlinie hat eine ähnliche Wirkung wie die in anderen Antworten erwähnten Alternativen (wie pushd, dir, Explorerusw.), aber es schien einen leichteren Ansatz.

rkagerer
quelle
0

Die Antwort von StanZ funktionierte für mich, aber ich musste in der Lage sein, zugeordnete Laufwerke ohne den Status OK programmgesteuert zu ermitteln, da Benutzer in unserer Domäne unterschiedliche Laufwerkszuordnungen erhalten. Ich habe hier codiert, um sie als eigenständige Version auszuführen, die net usevor und nach dem eigentlichen Code ausgeführt wird, damit Sie die Ergebnisse sehen können, aber Sie müssen nur die eine FORAnweisung (drei Zeilen) in Ihren Code kopieren , um die gewünschten Ergebnisse zu erhalten.

@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
quelle
0

Vielleicht eine alte Frage, aber immer noch relevant in 2017 und Windows 10, da Netzwerkfreigaben oft aus verschiedenen Gründen nicht richtig durch Windows verbunden oder verbunden werden. Basierend auf diesem Problem und dem Fehlen einer wirklich praktikablen und voll funktionsfähigen Lösung habe ich ein Github-Projekt erstellt, das eine Scheduler-Task und einen VBS enthält, der das Problem löst, indem einfach versucht wird, Laufwerke nach dem Fortsetzen oder Anmelden erneut zu verbinden, wenn keine Verbindung besteht oder keine Verbindung besteht.

Das Skript ist vollständig konfigurierbar und kann je nach den Bedürfnissen des tatsächlichen Benutzers eingerichtet werden.

Pfad zum Github-Projekt

thex
quelle