Zeilen in einer Batch überspringen
Hi Zusammen,
ich stehe mal wieder auf dem Schlauch! Ich bastel gerade ein Skript um einen User Migration zu erleichtern.
Dazu lese ich per net use die gemappten Laufwerke aus und möchte diese weiter verarbeiten.
Beim suchen habe ich nix passendes gefunden (under der Schei... IE zeigt die Sseite nicht richtig an)
Ausgabe von net use:
Mein Schnipsel sieht bisher so aus
so sieht die Ausgabe aus
Aber ich will die Zeilen die mit Microsoft anfangen und die letzte überspringen. wie bekomme ich das hin?
Schon mal danke für alle Tipps
Nagus - der auf dem Schlauch steht ....
ich stehe mal wieder auf dem Schlauch! Ich bastel gerade ein Skript um einen User Migration zu erleichtern.
Dazu lese ich per net use die gemappten Laufwerke aus und möchte diese weiter verarbeiten.
Beim suchen habe ich nix passendes gefunden (under der Schei... IE zeigt die Sseite nicht richtig an)
Ausgabe von net use:
New connections will be remembered.
Status Local Remote Network
-------------------------------------------------------------------------------
H: \\xxxx\yyyyy\zzzzz\userid
Microsoft Windows Network
K: \\dddddd\gggggggg\hhhhhhh\SHARED
Microsoft Windows Network
P: \\cccccccc\lllllll\uuuuuuu\shared
Microsoft Windows Network
S: \\cccccccc\lllllll\ooooooooooo\shared
Microsoft Windows Network
T: \\cccccccc\lllllll\ooooooooooo\shared
Microsoft Windows Network
The command completed successfully.
Mein Schnipsel sieht bisher so aus
set "pfad=c:\%username_alt%"
net use > %pfad%\drives.tmp
FOR /F "skip=5 usebackq tokens=1,2,3,4* delims=\ " %%i in (%pfad%\drives.tmp) do echo %%i %%j %%k %%l %%m >>%pfad%\drives.txt
so sieht die Ausgabe aus
H: xxxx yyyyy zzzzz userid
Microsoft Windows Network
K: dddddd gggggggg hhhhhhh SHARED
Microsoft Windows Network
P: cccccccc lllllll uuuuuuu shared
Microsoft Windows Network
S: cccccccc lllllll ooooooooooo shared
Microsoft Windows Network
T: cccccccc lllllll ooooooooooo shared
Microsoft Windows Network
The command completed successfully.
Aber ich will die Zeilen die mit Microsoft anfangen und die letzte überspringen. wie bekomme ich das hin?
Schon mal danke für alle Tipps
Nagus - der auf dem Schlauch steht ....
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 230268
Url: https://administrator.de/contentid/230268
Ausgedruckt am: 21.11.2024 um 22:11 Uhr
3 Kommentare
Neuester Kommentar
Moin Nagus,
du könntest (theoretisch, do not use) Ausgabe von NET USE sofort filtern mit
Probier bitte am CMD-Prompt aus - aber verwenden wollen wir es nicht.
Denn dann hast du das Problem, dass mal 3, mal 4 Tokens rüberkommen, denn das erste Token "Status", das bei deinem Test immer leer ist, kann manchmal einen Wert (zB "OK") enthalten.
-> Folge: in dem Auswerten der Textdatei weiss du nie, ob das erste Token (in der Ergebniszeile) nun wirklich ein Laufwerksbuchstabe ist oder der Status.
Macht es unnötig komplex, wenn du da auch wieder Fallunterscheidungen einbauen musst.
Verwende lier eine gezielte WMIC-Abfrage auf exakt die Infos, die du brauchst.
...statt des NET USE... probier es am CMD-Prompt.
-> diese Ausgabe kannst du noch nachbehandeln mit
Grüße
Biber
du könntest (theoretisch, do not use) Ausgabe von NET USE sofort filtern mit
net use|findstr "\\"
Probier bitte am CMD-Prompt aus - aber verwenden wollen wir es nicht.
Denn dann hast du das Problem, dass mal 3, mal 4 Tokens rüberkommen, denn das erste Token "Status", das bei deinem Test immer leer ist, kann manchmal einen Wert (zB "OK") enthalten.
-> Folge: in dem Auswerten der Textdatei weiss du nie, ob das erste Token (in der Ergebniszeile) nun wirklich ein Laufwerksbuchstabe ist oder der Status.
Macht es unnötig komplex, wenn du da auch wieder Fallunterscheidungen einbauen musst.
Verwende lier eine gezielte WMIC-Abfrage auf exakt die Infos, die du brauchst.
wmic netuse get localname, remotename
...statt des NET USE... probier es am CMD-Prompt.
-> diese Ausgabe kannst du noch nachbehandeln mit
| findstr "\\"
, um die Titelzeile wegzufiltern.Grüße
Biber
Moin Nagus,
na, ein bsschen schlanker bekomme ich das auch mit net use hin.
Demo am CMD
Als Batch dann mit jeweils zwei Prozentzeichen vermutlich (ungetestet):
Glattgebügelt wird nur der Fall, dass im ersten Token "Status" etwas steht (also etwas wie "OK"/"Getrennt".)
Was passiert, wenn ein Netzlaufwerk OHNE Laufwerksangabe verbunden ist, das habe ich nicht ver- bzw. untersucht.
Grüße
Biber
na, ein bsschen schlanker bekomme ich das auch mit net use hin.
Demo am CMD
FOR /F "tokens=1,2,3,4* " %i in ('net use^|findstr "\\"') do @if [%k]== (echo %i %j) else echo %j %k
Als Batch dann mit jeweils zwei Prozentzeichen vermutlich (ungetestet):
:: Batch SammleAlleNetUses.cmd
FOR /F "tokens=1,2,3,4* " %%i in ('net use^|findstr "\\"') do @if [%%k]== (echo %%i %%j) else echo %%j %%k
Glattgebügelt wird nur der Fall, dass im ersten Token "Status" etwas steht (also etwas wie "OK"/"Getrennt".)
Was passiert, wenn ein Netzlaufwerk OHNE Laufwerksangabe verbunden ist, das habe ich nicht ver- bzw. untersucht.
Grüße
Biber