Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Per cmd alle Netzlaufwerke sichern und später neu einbinden

Frage Entwicklung Batch & Shell

Mitglied: blowdow

blowdow (Level 1) - Jetzt verbinden

29.07.2013 um 09:30 Uhr, 5087 Aufrufe, 10 Kommentare

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"?

Freundliche Grüsse
Mitglied: bastla
29.07.2013 um 09:36 Uhr
Hallo blowdow!

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

Grüße
bastla
Bitte warten ..
Mitglied: blowdow
29.07.2013 um 10:28 Uhr
Hallo bastla

Ja, ganz genau Habe zwar vor meinem Eintrag danach gesucht, aber trotzdem nichts gesehen

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
Bitte warten ..
Mitglied: blowdow
29.07.2013 um 10:55 Uhr
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.
Bitte warten ..
Mitglied: bastla
29.07.2013, aktualisiert um 11:00 Uhr
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:
01.
@echo off & setlocal 
02.
set "Batch=D:\MapEm.cmd" 
03.
 
04.
del "%Batch%" 2>nul 
05.
for /f "delims=" %%i in ('net use^|findstr ":"') do call :ProcessLine "%%i" 
06.
goto :eof 
07.
 
08.
:ProcessLine 
09.
for /f "tokens=2*" %%a in (%1) do ( 
10.
    set "LW=%%a" 
11.
    set "Pfad=%%b" 
12.
13.
set "Pfad=%Pfad:Microsoft Windows-Netzwerk=%" 
14.
call :Trim %Pfad% 
15.
if defined Pfad >>"%Batch%" echo net use %LW% "%Pfad%" 
16.
goto :eof 
17.
 
18.
:Trim 
19.
set "Pfad=%*" 
20.
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
Bitte warten ..
Mitglied: blowdow
29.07.2013 um 15:33 Uhr
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
Bitte warten ..
Mitglied: bastla
29.07.2013 um 15:44 Uhr
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
Bitte warten ..
Mitglied: blowdow
29.07.2013 um 16:50 Uhr
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

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

Grüsse und schönen Abend noch

blowdow
Bitte warten ..
Mitglied: bastla
29.07.2013 um 16:57 Uhr
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.

Grüße
bastla
Bitte warten ..
Mitglied: blowdow
23.08.2013 um 11:39 Uhr
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...
Bitte warten ..
Mitglied: bastla
23.08.2013 um 12:35 Uhr
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
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Ubuntu
gelöst Linux neu erstellte vhd einbinden (2)

Frage von ClepToManix zum Thema Ubuntu ...

Windows 10
Netzlaufwerke einbinden und ping Windows 10 funktioniert nicht (3)

Frage von Lebowski23 zum Thema Windows 10 ...

Windows Netzwerk
USB-Gerät ins Netzwerk (Domäne) einbinden (3)

Frage von griss0r zum Thema Windows Netzwerk ...

Batch & Shell
CMD Verschlüsslung ( Batch ) (9)

Frage von clragon zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...