blowdow
Goto Top

Per cmd alle Netzlaufwerke sichern und später neu einbinden

Guten Morgen zusammen

Gerne möchte ich folgendes realisieren und wäre für eure Hilfe sehr dankbar:

Z.B. per "net use" kann ich alle verbundenen Netzlaufwerke ermitteln. Dort sehe ich jeweils den Laufwerkbuchstaben (A-Z) und den dazugehörigen Server (\\Server1\irgendwas)

Mein Ziel wäre es, wenn ich irgendwie diese "net use" Informationen irgendwo exportieren könnte. Auf einem anderen PC würde ich dann gerne ein cmd ausführen, das dann alle gesicherten/exportierten Netzlaufwerke wieder mit den gleichen Laufwerkbuchstaben/Server verbindet.

Das einfache exportieren könnte ich z.B. so machen?:
net use > C:\Backup_Netzlaufwerke.txt

Schwieriger wird es sicherlich sein, wie ich diese dann genau auslesen könnte (mit einer Schleife?)

Ihr müsst natürlich nicht nur wegen mir jetzt was hinzaubern und programmieren. Aber vielleicht hat das jemand auch schon gebraucht und ein solches Script bei sich im "Archiv"? face-wink

Freundliche Grüsse

Content-ID: 212735

Url: https://administrator.de/contentid/212735

Ausgedruckt am: 26.11.2024 um 14:11 Uhr

bastla
bastla 29.07.2013 um 09:36:30 Uhr
Goto Top
Hallo blowdow!

Du meinst sowas wie zB in Aktuell verbundene Netzlaufwerke in ein Script schreiben mit net use?

Grüße
bastla
blowdow
blowdow 29.07.2013 um 10:28:30 Uhr
Goto Top
Hallo bastla

Ja, ganz genau face-smile Habe zwar vor meinem Eintrag danach gesucht, aber trotzdem nichts gesehen face-sad

Dein Script funktioniert nicht schlecht. Da es auch oft Netzlaufwerke mit einem Leerschlag gibt (\\Server\Das ist ein Share), so nimmt er dann nur (\\Server\Das). Könnte man das bei deinem super 1-Zeiler noch einbauen?

Grüsse
blowdow
blowdow 29.07.2013 um 10:55:09 Uhr
Goto Top
bastla, ich habe soeben noch was entdeckt...

Nicht immer steht bei den Netzlaufwerken (net use) ganz links der Status "OK". Manchmal steht einfach nichts. Dann funktioniert dein Script leider nicht ganz korrekt. hmmmm, schade.
bastla
bastla 29.07.2013 aktualisiert um 11:00:24 Uhr
Goto Top
Hallo blowdow!
Da es auch oft Netzlaufwerke mit einem Leerschlag gibt (\\Server\Das ist ein Share)
Wer macht denn sowas?

Die Zerlegung der "net use"-Ausgabe im angesprochenen Ansatz beruht auf Leerzeichen - daher reicht dann ein Einzeiler nicht mehr. Versuch es damit:
@echo off & setlocal
set "Batch=D:\MapEm.cmd"  

del "%Batch%" 2>nul  
for /f "delims=" %%i in ('net use^|findstr ":"') do call :ProcessLine "%%i"  
goto :eof

:ProcessLine
for /f "tokens=2*" %%a in (%1) do (  
    set "LW=%%a"  
    set "Pfad=%%b"  
)
set "Pfad=%Pfad:Microsoft Windows-Netzwerk=%"  
call :Trim %Pfad%
if defined Pfad >>"%Batch%" echo net use %LW% "%Pfad%"  
goto :eof

:Trim
set "Pfad=%*"  
goto :eof
[Edit]
Manchmal steht einfach nichts. Dann funktioniert dein Script leider nicht ganz korrekt
Wie sieht denn dann die Ausgabe von "net use" aus, bzw wie (womit) sollte denn dann neu verbunden werden?
[/Edit]

Grüße
bastla
blowdow
blowdow 29.07.2013 um 15:33:43 Uhr
Goto Top
Hi bastla

Dein Script kann ich wirklich wunderbar benutzen. Super Sache!

Ach ja, User machen zum Teil selber solche Shares. Auch wenn ich persönlich keine Leerstellen in Pfad-Angaben machen würde, möchte ich diese restoren.

Ein kleines Problem habe ich nun noch. Wenn ich dein Script zwischen mein Backup-Tool einfüge und starte, so bricht es mir immer das Backup ab. Ich gehe davon aus, das liegt an dem "goto :eof". Wie müsste ich diese in deinem Script anpassen, damit anschliessend das Script weiter unten weiterfährt?

Gruss
blowdow
bastla
bastla 29.07.2013 um 15:44:01 Uhr
Goto Top
Hallo blowdow!
User machen zum Teil selber solche Shares.
Auch noch Admin-Rechte ...
Der Batch besteht aus einem "Hauptprogramm" (endet bei Zeile 6) und dem Unterprogramm ":ProcessLine". Wichtig ist dabei eigentlich nur, dass ":ProcessLine" nicht am Ende nochmals durchlaufen wird - daher das "goto :eof" in Zeile 6 zum Beenden des Hauptprogramms. Wenn Du weitere Programmschritte einbauen willst, kannst Du das entweder zwischen Zeile 5 und 6 oder durch Umwandlung der Zeile 6 in zB
goto :Weiter
und Anfügen des restlichen Batchcodes unterhalb der Zeile 20, beginnend mit
:Weiter
Grüße
bastla
blowdow
blowdow 29.07.2013 um 16:50:11 Uhr
Goto Top
Hallo bastla

Nein, die User haben keine Admin-Rechte. Wie kommst du darauf?

Die User (versierte User) können neue Laufwerkbuchstaben zu bestehenden Unterordner erstellen. Natürlich nur auf Ordner/Unterordner, auf welche sie tatsächlich Rechte haben. Andere User erstellen einfach einen normalen Shortcut auf dem Desktop, um auf einen Order schnell zugreifen zu können. Der Sinn dahinter, das ist wieder eine andere Frage face-wink

1000 Dank für deine Hilfe. Nun kann ich endlich die Netzlaufwerke wieder einbinden lassen face-smile

Grüsse und schönen Abend noch

blowdow
bastla
bastla 29.07.2013 um 16:57:03 Uhr
Goto Top
Hallo blowdow!
Nein, die User haben keine Admin-Rechte. Wie kommst du darauf?
Ich hatte
User machen zum Teil selber solche Shares.
als "erstellen selbst solche Freigaben" interpretiert ...

Anyhow - freut mich, wenn's hilft. face-smile

Grüße
bastla
blowdow
blowdow 23.08.2013 um 11:39:31 Uhr
Goto Top
Guten Tag allerseits

Wie oben beschrieben funktioniert das Script soweit wunderbar. Ich habe nun doch noch was "unschönes" entdeckt.

Es gibt z.B. Shares, welche ein User/Passwort benötigen. Sofern beim net use Befehl ein Passwort notwenig ist, so fragt er mich das ab:

Enter the user name for 'Share':
Enter the password for 'Share':

Gerne würde ich, wenn diese User/PW-Abfrage kommt, dass das Script einfach weiterläuft (ohne, dass ich eine Eingabe tätigen muss). Wenn eine solche User/PW-Abfrage kommt, so soll es halt keinen Share erstellen und einfach zum nächsten gehen.

Habt ihr eine Idee, wie ich das anstellen könnte? Z.b. mit if errorlevel goto next? Hmmmmm, glaube zwar eher nicht, da ja eine User/PW-Abfrage keine error generiert...
bastla
bastla 23.08.2013 um 12:35:45 Uhr
Goto Top
Hallo blowdow!

Versuch es mit folgender (ungetesteten) Zeile 14:
if defined Pfad >>"%Batch%" echo echo.^|net use %LW% "%Pfad%"
Falls die Fehlermeldungen unterdrückt werden sollen:
if defined Pfad >>"%Batch%" echo echo.^|net use %LW% "%Pfad%" 2^>nul
Grüße
bastla