Windows: Reconnect von Netzwerklaufwerken

Zieht man einen Fileserver um, indem man den Namen beim neuen Server übernimmt, so kann es vorkommen, dass auf dem Client alle gespeicherten Netzwerklaufwerkverknüpfungen als getrennt angezeigt werden. Dieses Problem ist auch in folgendem Supportartikel beschrieben: http://support.microsoft.com/kb/829885/en-us.

Um dieses Problem zu lösen, kann man folgendes Script einsetzen. Es wird beim Anmelden des Benutzers gestartet und verbindet alle getrennten Netzwerklaufwerke neu:

@echo off
rem getrennte netzwerklaufwerke finden
net use | findstr /i "Getr"  > %temp%\getrennt.txt
if EXIST "%temp%\getrennt-lw.txt" (del %temp%\getrennt-lw.txt)

for /f "tokens=2,3* delims= " %%a in (%temp%\getrennt.txt) do (
    echo %%a >>%temp%\getrennt-lw.txt
)

if EXIST "%temp%\getrennt-lw.txt" (
    rem für jeden laufwerksbuchstaben über die registry den unc pfad finden (workaround für leerzeichen im pfad)
    for /f "delims=:" %%w in (%temp%\getrennt-lw.txt) do (
        reg query HKCU\Network\%%w /V RemotePath >%temp%\getrennt-reg.txt
        for /f "tokens=1,2*" %%a in (%temp%\getrennt-reg.txt) do (
            if %%a.==RemotePath. (
                net use %%w: /delete
                net use %%w: "%%c"
            )
        )
    )
)

Kurze Erklärung:

  1. In Zeile 3-9 werden per net use alle Laufwerksbuchstaben ermittelt, die im Status “getrennt” sind (das Script braucht somit ein deutsches XP)
  2. In Zeile 10-13 wird dann über die Registry der Netzwerkpfad ermittelt. Dieser Schritt wurde so komplex gestaltet, da im UNC Pfad ein Leerzeichen enthalten sein könnte. Dies ist bei net use nicht sauber auswertbar.
  3. In Zeile 16 wird das Netzwerklaufwerk dann gelöscht, um es in Zeile 17 wieder neu zu verbinden.
This entry was posted in Deutsch, Windows. Bookmark the permalink.