Jump to content

Mehrfach vorhandene Netzwerklaufwerke mit unterschiedlichen Laufwerksbuchstaben


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo liebe Batch-Programmierer,

 

für folgendes Problem suche ich eine Lösung.

Ich versuche, Euch das Problem möglichst genau zu schildern:

 

In unserem Unternehmen ist eine "Start-GUI" im Einsatz, welche dazu dient, andere Applikationen mit entsprechend vorher eingestellten Parametern zu starten.

 

Aus der "Start-GUI" heraus wird zudem ein Command-Fenster geöffnet, in welchem ein paar echo-Ausgaben stattfinden.

 

Nach Auswahl der entsprechenden Parameter innerhalb des "Start-GUI" wird eine Applikation gestartet.

 

Parallel wird im Hintergrund ein Netzwerklaufwerk gemappt, und zwar mit dem NÄCHST FREIEN LAUFWERKSBUCHSTABEN (GetFirstFreeDriveLetter)

Der Laufwerksbuchstabe kann, (aber muss nicht zwingend) A:\ sein. Ich nenne ihn hier mal "%LW%"

 

Das verbundene Netzwerklaufwerk ist für die Funktion der gestarteten Applikation zwingend notwendig.

 

So lange die Applikation läuft, bleibt auch das Command-Fenster geöffnet.

 

Erst beim Schließen der Applikation wird das Laufwerk per "net use %LW% /DELETE" wieder sauber abgeklemmt und das Command-Fenster geschlossen.

 

Folgendes Problem tritt ein:

Der Anwender schließt das Command-Fenster.

Dies hat für die Applikation keinerlei Auswirkung, da das Laufwerk bereits gemappt ist. Allerdings ist der Task nun gestorben und das Laufwerk wird bei beenden der Applikation nicht mehr abgeklemmt.

 

Was passiert?

-Die Start-GUI und die Applikation wird erneut gestartet

-Das Command-Fenster öffnet sich wieder.

-Der nächste, freie Laufwerksbuchstabe wird gemappt - > jetzt B:\

-Der Benutzer schließt das Command-Fenster

-...und verbindet sich nach und nach alle zur Verfügung stehenden Laufwerksbuchstaben D:\, E:\, F:\ ,bis alle vergeben sind.

 

Das sieht dann in etwa so aus:

 

A: \\merkur\STARTGui\conf\_share_

B: \\merkur\STARTGui\conf\_share_

C: Lokaler Datenträger

D: Wechseldatenträger

E: Wechseldatenträger

F: Wechseldatenträger

G: Wechseldatenträger

H: DVD-Laufwerk

I: \\merkur\STARTGui\conf\_share_

J: \\merkur\STARTGui\conf\_share_

usw....

 

 

Der net use sagt folgendes:

 

C:\Documents and Settings\[user]>net use

New connections will be remembered.

 

Status Local Remote Network

 

----------------------------------------------------------------------------------------------------------------------------

OK A: \\merkur\STARTGui\conf\_share_ Microsoft Windows Network

OK B: \\merkur\STARTGui\conf\_share_ Microsoft Windows Network

OK I: \\merkur\STARTGui\conf\_share_ Microsoft Windows Network

OK Z: \\pluto\private$ Microsoft Windows Network

 

The command completed successfully.

C:\Documents and Settings\[user]>

 

Die Batch, die gestartet wird müßte um folgendes ergänzt werden:

 

1: Abrage: existiert das Netzwerklaufwerk "\\merkur\STARTGui\conf\_share_" ?

2: Bedingung: wenn Ja, dann unter welchem Buchstaben? Wenn Nein, starte die Applikation

3: Aktion: Trenne den Laufwerksbuchstaben.%LW%

4: Abfrage: existiert ein weiteres Netzwerklaufwerk "\\merkur\STARTGui\conf\_share_" ?

5: Bedingung: wenn Ja, dann unter welchem Buchstaben? Wenn nein Starte die Applikation.

 

Damit wäre klar, was gemeint ist. Es darf beim start der "Start-GUI" nur ein Netzwerklaufwerk "\\merkur\STARTGui\conf\_share_" mit Variablem Laufwerksbuchstaben vorhanden sein.

 

Die Lösung muss im Batch programmiert sein.

Kein VB oder andere "Tricks" wie Fenster verbergen, etc... sind erlaubt!

 

Wer kann mir hier helfen?

Bei Fragen stehe ich gerne zur Verfügung

 

Schonmal vielen Dank im Voraus

Uli

Link zu diesem Kommentar

Moin,

 

du hast doch schon alles, was du brauchst. Dein Batch ruft zuerst per net use die Liste der Mappings und filtert mit find nach dem gesuchten String. Ist der vorhanden, dann trennt es das Laufwerk. Das bekommst du mit for recht leicht hin. Fertigen Code kann ich dir nicht dazu geben, weil das immer ein wenig Gebastel ist, aber das dürftest du fix fertig kriegen.

 

Eine andere Variante wäre, einfach per net use * /delete alle Mappings zu löschen. Da weiß ich aber nicht, ob das bei dir machbar ist.

 

Gruß, Nils

Link zu diesem Kommentar

Hallo Nils,

 

Danke! Erstmal - die Variante mit "net use * /delete alle Mappings zu löschen" kommt nicht in Frage...

 

Ich komme an der Stelle um die Laufwerksbuchstaben auszulesen nicht weiter und bräuchte hier Hilfe:

Folgedes habe ich bereits:

 

@echo off

FOR /F "tokens=*" %%A IN ('net use ^| FIND "STARTGui\conf\_share_"') DO echo %%A

 

Die zeilenweise Ausgabe der Variable %%A sieht wie folgt aus:

OK A: \\merkur\STARTGui\conf\_share_

OK B: \\merkur\STARTGui\conf\_share_

OK I: \\merkur\STARTGui\conf\_share_

 

Wie extrahiere ich jetzt die Laufwerksbuchstaben?

 

schönen Gruß

Link zu diesem Kommentar

Hallo nawas,

 

ja, wie gesagt, die Laufwerksbuchstaben werden nach dem Prizip "was als nächstes frei ist", vergeben.

 

Einen fester Buchstabe können wir nicht vergeben (aufgrund Anforderung!).

 

Die Laufwerke werden nicht dauerhaft gemapt (/PERSISTENT:NO) und der reboot würde in jeden Fall helfen, ist aber die Holzhammer-Methode.

 

Gruß

Link zu diesem Kommentar

Da hab' ich mir jetzt mal was zusammengebastelt...

Vielleicht kann sich das ja mal jemand anschauen und evtl. korrigieren.

Funktionieren tut's jedenfalls, aber vielleicht geht's ja noch eleganter ?!?

 

@echo off

for /f "tokens=2,3 delims= " %%i in ('net use ^| FIND "\\merkur\STARTGui\conf\_share_"') do (

rem echo %%i

net use %%i /delete /y

)

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...