Jump to content

UNC Pfad mit Dosbefehl ausgeben???


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

Empfohlene Beiträge

Hallo Leute!

 

Ich suche nach einer Möglichkeit mir den UNC Pfad eines Netzlaufwerkes ausgeben zu lassen. Der Befehl "net" bietet zwar mannigfaltige Möglichkeiten der Informationsbeschaffung, aber ich habe leider noch nichts gefunden, das genau meinen Anforderungen entsprechen würde.

 

Ziel Soll es sein per Batch alle Netzlaufwerke aufzulisten und den dazugehörigen UNC-Pfad mittels Anfügeumleitung in eine Textdatei zur weiteren Verarbeitung abzulegen. Leider sind die Möglichkeiten Strings per Batch zu manipulieren relativ mager, sodass ich eigentliche nur die UNC Pfade zeilenweise in der Textdatei haben will.

Link zu diesem Kommentar

Erstmal Danke für die schnelle Antwort Auer:)

 

Net View hab ich schon durchgetestet. Damit bekomm ich leider nur die Namen der Freigaben auf beliebigen Rechnern (zumindest ist mir kein Parameter bekannt, der mir den UNC Pfad auspuckt).

Ich brauche irgendeinen Befehl, der mir in der Ausgabe den UNC Pfad mit ausspuckt, den Rest kann ich dann selbst erledigen:)

 

Als Abfrage parameter steht mir nur der Buchstabe des Netzlaufwerkes zur Verfügung.

Link zu diesem Kommentar

Danke KlausK:)

 

Das ist so ziemlich genau das, was ich brauche:) Mal eine Frage aus reinem Interesse:)Was genau macht diese Zeile? Das Ergebnis kenn ich ja jetzt:) Welcher Mechanismus steckt aber dahinter? Die Syntax ist für mich reichlich kryptisch. Das habe ich in der Art noch nicht gesehen.

 

Edit:

 

Ich hab es jetzt mal bei mehreren Laufwerken getestet und festgestellt, das mir der befehl immer nur den Pfad des ersten Netzlaufwerkes rausgibt. Anyway, das bekomm ich schon geregelt(hab mal vorhin "for /?" eingegeben) :) Allerdings bereitet mir die Tatsache, das "Freigabe=\\%%i\%%j" anscheinend nur zur Formatierung da ist ein wenig Kopfzerbrechen, da ich es oft mit UNC's zu tun habe, die sich wie folgt darstellen:

\\byxxp3\tp\bl\ux\tr\install$

Das bedeutet, das ich im vorfeld nicht weiss wieviele teilsegmente der Pfad enthält. Diesbezüglich müsste ich das formatieren etwas dynamischer gestalten!?

 

mit

 

 

regards

Link zu diesem Kommentar

@DAU-JONES

Frag mich nicht solche Sachen - ich nehme immer eine funktionierende For-Schleife und passe sie an. Die for-Schleife untersucht die Ausgabe des Befehls net use ab der 7. Zeile (skip=6), sucht nach dem Zeichen "\" (Delims=\) und übergibt die darauffolgenden Zeichen der 2. und 3. Fundstelle :confused: (Tokens=2-3) an die Variable %i bzw %j (%i wird bei jeder Fundstelle hochgezählt).

 

@auer

Meinst Du "for /?"

 

@r_t

Meine Bauchschmerzen gehen auch schon los :rolleyes: - welches Problem hast Du?

Link zu diesem Kommentar

@DAU-JONES: Deine Ergänzung läuft nun aber - fürchte ich - auf eine Begriffsvermischung hinaus. Bei \\byxxp3\tp\bl\ux\tr\install$ ist die Freigabe tp, der Rest ist der darunterliegende Pfad, wobei das letzte Verzeichnis 'zufälligerweise' wie eine versteckte Freigabe aussieht.

 

Mit net use im Inneren des for - Ausdrucks liefert das Beispiel von @klausk immer nur Ausdrücke der Form \\Rechner\Freigabe, niemals etwas längeres.

 

Falls Du mehrere Ausdrücke hintereinander verarbeiten möchtest, liefert Dir die Umgebungsvariable immer nur den ersten Ausdruck. Da ist eine doppelte for-Schleife notwendig:

 

for /f "Skip=6 delims=: tokens=1-2" %%i in ('net use') do for /f %%m in ('echo %%j') do if not "%%m" == "ECHO" echo %%m

 

Zunächst wird der Output von net use am Doppelpunkt in zwei Teile getrennt, der zweite Teil in 'echo %%j' ausgegeben und mit Leerzeichen getrennt, so daß der Nachklapp 'Microsoft ...' wegfällt. Da hinten Leerzeilen folgen, bekommt man Echos raus, also muß dies abgefangen werden, sonst würden unsinnige Befehle eingesetzt. Statt des letzten echo %%m kannst Du einen Befehl einsetzen oder einen Batch mit Call aufrufen, der den Freigabenamen der Form \\Server\Freigabe als Parameter enthält.

 

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

Gruß, Auer

Link zu diesem Kommentar

Mit einem anderen Trennzeichen ( : statt \ ) und einer zweiten For-Schleife geht's - es wird der komplette Pfad aller Netzlaufwerke angezeigt:

FOR /F "Tokens=2-3 Delims=: skip=6" %%i in ('net use') do FOR /F "Delims=; " %%A in ('@echo %%i') do @echo %%A

Der Nachteil an dem Konstrukt ist, dass am Schluß immer eine leere Ausgabe ohne Pfad erzeugt wird. Beim Testen @echo off nicht vergessen, sonnst wird die Ausgabe unübersichtlich ;)

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...