Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 3555 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 ..
Ähnliche Inhalte
Batch & Shell
Batch bestimme Zeile einer vorherigen batch einfügen (9)

Frage von Frensche zum Thema Batch & Shell ...

Batch & Shell
gelöst Mit Batch Zeilen aus TXT modifizieren (4)

Frage von chef1568 zum Thema Batch & Shell ...

Batch & Shell
Zeile eine Datei per batch ersetzen (2)

Frage von duckknight zum Thema Batch & Shell ...

Neue Wissensbeiträge
Humor (lol)

Taschenrechner in IOS kaputt!

(7)

Information von Lochkartenstanzer zum Thema Humor (lol) ...

Sicherheit

Kanadischer Geheimdienst veröffentlicht erstmals Sicherheitssoftware

(3)

Information von BassFishFox zum Thema Sicherheit ...

Virtualisierung

Docker Monitoring und Steuerung per "sen"

Tipp von Frank zum Thema Virtualisierung ...

Heiß diskutierte Inhalte
Windows 7
Abbruch bei Brennvorgang (33)

Frage von Simulant zum Thema Windows 7 ...

Firewall
WIndows 7 RDP Massen Angriff (18)

Frage von Motte990 zum Thema Firewall ...

Windows Server
Vhdx-Datei viel größer als Inhalt der Festplatte - wie schrumpfen? (18)

Frage von Winfried-HH zum Thema Windows Server ...

Netzwerkgrundlagen
Die richtige VPN Sofware - Erklärt wie? (11)

Frage von stormwind81 zum Thema Netzwerkgrundlagen ...