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

Zeilen in einer Batch überspringen

Frage Entwicklung Batch & Shell

Mitglied: Nagus

Nagus (Level 2) - Jetzt verbinden

18.02.2014 um 12:21 Uhr, 3004 Aufrufe, 3 Kommentare

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:

01.
New connections will be remembered. 
02.
 
03.
Status       Local     Remote                    Network 
04.
 
05.
------------------------------------------------------------------------------- 
06.
             H:        \\xxxx\yyyyy\zzzzz\userid  
07.
                                                 Microsoft Windows Network 
08.
             K:        \\dddddd\gggggggg\hhhhhhh\SHARED  
09.
                                                 Microsoft Windows Network 
10.
             P:        \\cccccccc\lllllll\uuuuuuu\shared 
11.
                                                 Microsoft Windows Network 
12.
             S:        \\cccccccc\lllllll\ooooooooooo\shared  
13.
                                                 Microsoft Windows Network 
14.
             T:        \\cccccccc\lllllll\ooooooooooo\shared  
15.
                                                 Microsoft Windows Network 
16.
The command completed successfully. 
17.
 
Mein Schnipsel sieht bisher so aus
01.
set "pfad=c:\%username_alt%" 
02.
net use > %pfad%\drives.tmp 
03.
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

01.
H: xxxx yyyyy zzzzz userid   
02.
Microsoft Windows Network    
03.
K: dddddd gggggggg hhhhhhh SHARED   
04.
Microsoft Windows Network    
05.
P: cccccccc lllllll uuuuuuu shared    
06.
Microsoft Windows Network    
07.
S: cccccccc lllllll ooooooooooo shared   
08.
Microsoft Windows Network    
09.
T: cccccccc lllllll ooooooooooo shared  
10.
Microsoft Windows Network    
11.
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 ....
Mitglied: Biber
18.02.2014, aktualisiert um 13:19 Uhr
Moin Nagus,

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
Bitte warten ..
Mitglied: Nagus
18.02.2014 um 13:46 Uhr
Moin Biber,
danke, aber da habe ich keinen Zugriff drauf ...

Habe eine eigene Lösung gefunden die funktioniert

01.
FOR /F "eol=M skip=6 usebackq tokens=1,2,3,4* delims=\ " %%i in (%pfad%\drives.tmp) do echo %%i;\\%%j\%%k\%%l\%%m >>%pfad%\drives.t1p 
02.
FOR /F "tokens=1,2 delims=;" %%i in (%pfad%\drives.t1p) do if %%i EQU The (echo.>nul) else echo %%i %%j>>%pfad%\drives.txt
was nur merkwürdig ist: die erste Zeile der Datei drives.txt ist leer - in den temp Dateien macht er es rcihtig .. Oo

Gruß
Nagus
Bitte warten ..
Mitglied: Biber
LÖSUNG 18.02.2014, aktualisiert um 21:02 Uhr
Moin Nagus,

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):
01.
:: Batch SammleAlleNetUses.cmd 
02.
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
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
gelöst Mit batch zeilen auslesen (2)

Frage von keksegriller zum Thema Batch & Shell ...

Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

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

Frage von clragon zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...