Batch: Netzlaufwerk verbinden & trennen

OP #5588222
Lesenswert?

Hi,

kann mir mal jemand bitte unter die Arme greifen?

Ich bräuchte ein paar Windwos-Batch-Zeilen die ein Netzwerkordner als 
Netzlaufwerk auf einen (x-beliebigen) freien Laufwerksbuchstaben mappen 
und mir diesen Laufwerksbuchstaben dann als Variable oder so 
breitstellt, dass mein Skipt dann andere Dinge damit machen kann.
Sollte das Verbinden des Netzlaufwerkes schief gehen, soll das Skript 
mit einer Fehlermeldung beenden.

Und abschließend soll das Netzlaufwerk natürlich noch getrennt werden.

Ich weiß prinzipiell, dass mir da "net use" weiterhilft. Ich weiß aber 
nicht wie ich das dazu bekomme, sich selbst einen Laufwerksbuchstaben zu 
suchen, den Laufwerksbuchstaben bei Erfolg weiterzugeben bzw. wie ich 
bei einem evtl. Fehler abbreche.

VG
da_user
Persönliche Seite #5588299
Lesenswert?

Und Du musst zwingend einen Laufwerksbuchstaben verwenden?

Man kann UNC-Pfade auch direkt verwenden, ohne den Umweg über einen 
Laufwerksbuchstaben zu gehen, und (sofern Authentifizierung erforderlich 
ist) fast genauso mit "net use" arbeiten wie bei der Verwendung mit 
Laufwerksbuchstaben.
1
net use \\server\freigabe /user:benutzer password
2

3
del \\server\freigabe\blafusel.txt 
4

5
md \\server\freigabe\geraffel
6

7
echo "blabla" >> \\server\freigabe\geraffel\zeug.txt
8

9
net use \\server\freigabe /del
Gast #5588793
Lesenswert?

Mein Vater hat einen Laptop, bei dem er auf Windows besteht. Alle 
Dokumente, Bilder, etc. sind auf einem Netzlaufwerk, von dem ich dann 
Weder über die Explorer GUI noch über net use habe ich es geschafft, 
dass sich das Netzlaufwerk beim Start zuverlässig verbindet. Sobald man 
es dann im Explorer anklickte, ging plötzlich alles. Am Schluss habe ich 
das ganze dann über einen Symlink gelöst, das funktioniert meiner 
Erfahrung nach am besten:
1
mklink /D C:\Share \\server\freigabe\geraffel

Wenn man dann nach C:\Share navigiert, egal ob mit cd, dem explorer, 
oder sonst was, verhält sich das so ziemlich wie ein normales lokales 
Verzeichnis. Das geht, weil die sogenannten Symlinks von Windows keine 
Symlinks sind, sondern Reparse Points.
Gast #5588896
Lesenswert?

> Aufriss betreiben

Eigentlich wird alles einfacher:
1
pushd \\server\freigabe
2

3
del blafusel.txt 
4

5
md geraffel
6

7
echo "blabla" >> geraffel\zeug.txt
8

9
popd


> Weder über die Explorer GUI noch über net use habe ich es geschafft

Tja, SMB/CIFS braucht einen Browserdienst.
Der ist in Peer-Umgebungen ohne Domänencontroller eben nicht
gerade zuverlaessig. Eintragen der Hosts in die LMHOSTS *)
mit dem Zusatz #PRE:

192.168.1.1  PC1  #PRE

hilft etwas. Geht natuerlich nur mit statischen Adressen ohne DHCP.




*) c:\WINDOWS\system32\drivers\etc\LMHOSTS
#5588936
Lesenswert?

Das unzuverlässige Mappen von Netzshares z.B. in Login-scripten unter 
Windows hat oft auch als Ursache, dass dass beim Start das Script zu 
einem Zeitpunkt ausgeführt wird, zu dem die Netzfunktionen noch nicht 
vollständig gestartet sind.
Da kein Mensch so genau weiß, wann Windows eigentlich mit Booten bzw. 
Starten fertig ist - ist das schlicht und einfach Grütze!
Gast #5588993
Lesenswert?

> Das unzuverlässige Mappen von Netzshares

Naja, wer auf die "Persistenz" von Mappings des Explorers vertraut,
hat eigentlich schon verloren.

In einem ordentlichen Script, kann man ja den Erfolg pruefen,
und ggfs. ein paar Versuche mehr machen.
(Muss ich ohne DC auch so machen.)

Aber es gibt genug Affen die mit Bananen gefüttert werden.
Bei denen sind die Scripte halt "maximal" einfach und
laufen nur bei Hochdruckwetter und 240 V Netzspannung
ohne Fehler.
OP #5588998
Lesenswert?

DPA schrieb:
> mklink /D C:\Share \\server\freigabe\geraffel
>
> Wenn man dann nach C:\Share navigiert, egal ob mit cd, dem explorer,
> oder sonst was, verhält sich das so ziemlich wie ein normales lokales
> Verzeichnis. Das geht, weil die sogenannten Symlinks von Windows keine
> Symlinks sind, sondern Reparse Points.

Hi,
ich glaube der Tipp war Gold wert. Wenn das richtig funktioniert, spare 
ich mir nämlich einiges an wackliges Zeug in meiner Batch-File, auf die 
eher dieses hier zutrifft:

supergrobi schrieb:
> Bei denen sind die Scripte halt "maximal" einfach und
> laufen nur bei Hochdruckwetter und 240 V Netzspannung
> ohne Fehler.

Sollte das nicht klappen habe ich beschlossen das ganze nicht mehr in 
einem Skript zu machen. Das wird zu unübersichtlich, kompliziert und 
überhaupt. Dann schreibe ich mir einfach ein kleines C# Programm, das 
mir die Aufgaben abarbeitet.
Prinzipiell wäre das natürlich auch ein schöner Zeitpunkt, um in die 
PowerShell einzusteigen, leider ist die standardmässig nicht aktiviert 
auf unseren Firmenrechnern.
Gast #5589065
Lesenswert?

Ich will deinen Optimismus ja nicht dämpfen, aber wenn das
Netzlaufwerk mal nicht zur Vefügung steht, handelt man sich
damit eher neue Probleme, wie nicht reagierende Explorerfenster,
Filedialoge von Applikation u.ä. ein.

Und wenn bei ihm ein "net use" immer erfolglos war, dann
ist bei ihm wohl eher noch was anderes faul.
Gast #5589088
Lesenswert?

> zu unübersichtlich, kompliziert und überhaupt.

Wenn dir so triviale Dinge wie ein Netzwerkmapping durchzufuehren,
auf Erfolg zu pruefen und ggfs. das ganze n-mal zu wiederholen
schon s.o. sind, solltest du vielleicht Baecker werden.

C# und Powershell bedienen sich schlussendlich der selben
schlechten Mechanismen die darunter liegen und bringen
dahingehend ueberhaupt keine Verbesserung.
OP #5589272
Lesenswert?

supergrobi schrieb:
> C# und Powershell bedienen sich schlussendlich der selben
> schlechten Mechanismen die darunter liegen und bringen
> dahingehend ueberhaupt keine Verbesserung.

Also sorry, ein C#-Programm kann ich doch von Grund auf übersichtlicher 
gestalten, als eine Batch-File.
Zudem sollte aus meinen Posting hervorgegangen sein, dass ich mehr 
machen will, als einfach nur ein Netzlaufwerk verbinden.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren