Top-Themen

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

Bestimmte Zeile auslesen um weitere funktionen auszuführen

Frage Entwicklung Batch & Shell

Mitglied: ersatzteil

ersatzteil (Level 1) - Jetzt verbinden

28.01.2011, aktualisiert 17:32 Uhr, 3559 Aufrufe, 8 Kommentare

Hey.

habe mich nun doch nach laengerer zeit, in der ich nur mitgelesen habe, bei euch registriert.
und zwar gibt es ein kleines problem zu dem ich keine direkte hilfe gefunden habe.

Ich habe ein txt-dokument, welches verschiedene IP-Adressen mit nachfolgenden stats beinhaltet.
ich moechte, dass die batch das txt-dokument zeilenweise ausliest und in der zeile mit dem wort "DIR" am zeilenanfang kontrolliert, ob ein unterordner angegeben ist ("Dir: /private/" o.ä.) oder nicht ("Dir: /")

wenn kein unterverzeichnis angegeben ist, sollen die dazugehoerigen zeilen in eine neue txt geschrieben werden und aus der alten geloescht werden.


Im Detail:

der inhalt von "vorlage.txt" sieht wie folgt aus (nur noch weitaus umfangreicher) :

01.
192.168.0.1 
02.
 
03.
--------------- 
04.
Dir: / 
05.
space free: 2658,50 mb 
06.
exec: no 
07.
logins: 5 
08.
 
09.
192.168.0.2 
10.
 
11.
--------------- 
12.
Dir: / 
13.
space free: 3450,50 mb 
14.
exec: yes 
15.
logins: 19 
16.
 
17.
192.168.0.3 
18.
 
19.
--------------- 
20.
Dir: /private/ 
21.
space free: 3657,00 mb 
22.
exec: yes 
23.
logins: 10 
24.
 
25.
192.168.0.4 
26.
 
27.
--------------- 
28.
Dir: / 
29.
space free: 6325,00 mb 
30.
exec: no 
31.
logins: 13 
32.
 
33.
192.168.0.5 
34.
 
35.
--------------- 
36.
Dir: /private/test/ 
37.
space free: 247,00 mb 
38.
exec: yes 
39.
logins: 15
aus der "vorlage.txt" sollen nun die zeilen "DIR:/" auf einen moeglichen pfad kontrolliert werden.
wenn kein pfad angegeben ist (DIR:/), sollen die dazugehoerigen stats in die "ohne.txt" übertragen werden und aus der "vorlage.txt" geloescht werden.
am ende soll dann "vorlage.txt" in "mit.txt" umbenannt werden (was ja kein problem ist).

die "mit.txt" soll dann nachher so aussehen:

01.
192.168.0.3 
02.
 
03.
--------------- 
04.
Dir: /private/ 
05.
space free: 3657,00 mb 
06.
exec: yes 
07.
logins: 10 
08.
 
09.
192.168.0.5 
10.
 
11.
--------------- 
12.
Dir: /private/test/ 
13.
space free: 247,00 mb 
14.
exec: yes 
15.
logins: 15
der rest soll in der "ohne.txt" gelistet sein.

vll ist es auch einfacher, es andersrum zu machen.
sodass die stats der IP, mit pfad (Dir: /private/) in ein neues txt-dokument geschrieben werden.

leider habe ich fuer diese aufgabe keinen ansatz, denn mit dem findstr befehl wuesste ich nicht, wie er nur die zeile "DIR:/" ueberpruefen soll.
und weiterhin, wie die dazugehoerigen zeilen mit verschoben werden sollen.

schonmal danke fuer eure hilfe!
Mitglied: bastla
28.01.2011 um 18:50 Uhr
Hallo ersatzteil und willkommen im Forum!

Das könnte etwa so gehen:
01.
@echo off & setlocal 
02.
set "Vor=D:\vorlage.txt" 
03.
set "Mit=D:\mit.txt" 
04.
set "Ohne=D:\ohne.txt" 
05.
set "Kenn=Dir: /" 
06.
 
07.
set "T=%temp%\temp.txt" 
08.
del "%Mit%" 2>nul 
09.
del "%Ohne%" 2>nul 
10.
del "%T%" 
11.
 
12.
set "Ziel=" 
13.
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%Vor%"') do set "Zeile=%%j" & call :ProcessLine 
14.
>>"%Ziel%" type "%T%" 
15.
goto :eof 
16.
 
17.
:ProcessLine 
18.
if "%Zeile%" neq "" ( 
19.
    echo %Zeile%|findstr /b "[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*">nul && (if exist %T% >>"%Ziel%" type "%T%" & del "%T%") 
20.
    echo %Zeile%|findstr /b /c:"%Kenn%">nul && (if "%Zeile%"=="%Kenn%" (set "Ziel=%Ohne%") else (set "Ziel=%Mit%")) 
21.
22.
>>"%T%" echo\%Zeile% 
23.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: ersatzteil
28.01.2011 um 19:05 Uhr
Hallo bastla

schonmal vielen dank fuer deine muehe, mir bei meinem problem zu helfen.
jedoch wenn ich eine bat-datei mit diesem code erstelle, dann oeffnet sich zwar fuer einen bruchteil einer sekunde die eingabeaufforderung, jedoch kann ich sie auch nicht mit dem befehl "wait" offenhalten, sodass ich sehen koennte, was darin steht.

es wird keine "mit.txt" oder "ohne.txt" erstellt.
die vorlage.txt ist unveraendert.


ich habe mal ausprobiert die bat wie folgt zu beginnen:

@echo off & setlocal
set "Vor=C:\vorlage.txt"
set "Mit=C:\mit.txt"
set "Ohne=C:\ohne.txt"
set "Kenn=Dir: /"

dachte, mit dem D: wuerde er eventuell in einem anderem laufwerk danach suchen. aber hat sich auch nichts geaendert.

gruß
Bitte warten ..
Mitglied: bastla
28.01.2011 um 19:38 Uhr
Hallo ersatzteil!

Wo sich Deine Ausgangsdatei "vorlage.txt" befindet, und wohin Du die Ergebnisdateien schreiben willst (bzw kannst), musst Du natürlich selbst wissen ...
jedoch kann ich sie auch nicht mit dem befehl "wait" offenhalten, sodass ich sehen koennte, was darin steht.
Zum Testen von Batchdateien empfiehlt es sich, diese aus einer CMD-Shell zu starten ...

Damit Du trotzdem zumindest die Fehlermeldungen lesen kannst, füge unmitelbar vor Zeile 15 eine neue Zeile
pause
ein.

Wenn Du noch mehr vom Ablauf sehen willst, ändere auch noch in Zeile 1 "echo off" auf "echo on" ...

Grüße
bastla
Bitte warten ..
Mitglied: ersatzteil
28.01.2011 um 19:47 Uhr
Zitat von bastla:
Damit Du trotzdem zumindest die Fehlermeldungen lesen kannst, füge unmitelbar vor Zeile 15 eine neue Zeile
pause

ein.


habe ich getestet.
somit stand nun "pause" in der 15. zeile

hat jedoch nichts geholfen, genau wie das echo on.

die eingabeaufforderung schließt sich direkt wieder.

du hast die bat bei dir bestimmt getestet, oder?
wenn du eine "vorlage.txt" hast, die obigen inhalt enthaelt.
wird bei dir "ohne" und "mit" erstellt?

zu dem ort, wo sich die "vorlage.txt" befindet ist eigentlichrelativ egal, da ich die bat immer in dem kleichen pfad benutzen moechte.
Bitte warten ..
Mitglied: bastla
28.01.2011 um 20:02 Uhr
Hallo ersatzteil!

Ja, ich habe getestet und folgende Dateiinhalte:
"mit.txt"
192.168.0.3 
 
--------------- 
Dir: /private/ 
space free: 3657,00 mb 
exec: yes 
logins: 10 
 
192.168.0.5 
 
--------------- 
Dir: /private/test/ 
space free: 247,00 mb 
exec: yes 
logins: 15 
"ohne.txt"
192.168.0.1 
 
--------------- 
Dir: / 
space free: 2658,50 mb 
exec: no 
logins: 5 
 
192.168.0.2 
 
--------------- 
Dir: / 
space free: 3450,50 mb 
exec: yes 
logins: 19 
 
192.168.0.4 
 
--------------- 
Dir: / 
space free: 6325,00 mb 
exec: no 
logins: 13 
und nein, es ist nicht egal, wo sich die "vorlage.txt" befindet, da sie ja schließlich vom Batch gefunden werden muss ...

Als Alternative eine "Drag & Drop"-Variante:
01.
@echo off & setlocal 
02.
set "Vor=%~1" 
03.
set "Mit=%~dp1mit.txt" 
04.
set "Ohne=%~dp1ohne.txt" 
05.
set "Kenn=Dir: /" 
06.
 
07.
set "T=%temp%\temp.txt" 
08.
del "%Mit%" 2>nul 
09.
del "%Ohne%" 2>nul 
10.
del "%T%" 
11.
 
12.
set "Ziel=" 
13.
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%Vor%"') do set "Zeile=%%j" & call :ProcessLine 
14.
>>"%Ziel%" type "%T%" 
15.
pause 
16.
goto :eof 
17.
 
18.
:ProcessLine 
19.
if "%Zeile%" neq "" ( 
20.
    echo %Zeile%|findstr /b "[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*">nul && (if exist %T% >>"%Ziel%" type "%T%" & del "%T%") 
21.
    echo %Zeile%|findstr /b /c:"%Kenn%">nul && (if "%Zeile%"=="%Kenn%" (set "Ziel=%Ohne%") else (set "Ziel=%Mit%")) 
22.
23.
>>"%T%" echo\%Zeile% 
24.
goto :eof
Wenn Du die "vorlage.txt" auf die Batchdatei ziehst, werden die Ergebnisdateien im selben Ordner wie die Ausgangsdatei erzeugt (soferne Du dort Schreibrechte hast)..

Grüße
bastla
Bitte warten ..
Mitglied: ersatzteil
28.01.2011 um 21:58 Uhr
bastla.
ich bin dir sehr dankbar!
entschuldige, dass ich dich nochmal eine variante hab erstellen lassen, da der fehler bei mir lag.

ich habe den code kopiert, jedoch nicht gemerkt, dass ein teil einer zeile in eine neue zeile kopiert worden ist und somit keinen zusammenhang mehr haben konnte.

deswegen kam auch kein ergebnis dabei rum.

es funktioniert super, auch mit der ersten variante!

Vielen dank und noch einen angenehmen abend!


MfG

Mo_88
Bitte warten ..
Mitglied: bastla
28.01.2011 um 22:07 Uhr
Hallo ersatzteil!
entschuldige, dass ich dich nochmal eine variante hab erstellen lassen
Halb so wild ...

Grüße
bastla

P.S.: Tipp für's Kopieren (beim nächsten Mal ): "Quelltext" anklicken, in das Popup-Fenster klicken und per Strg+a / Strg+c / Strg+v in den Editor übernehmen ...
Bitte warten ..
Mitglied: ersatzteil
28.01.2011 um 22:15 Uhr
und ich such hier die ganze zeit nach so ner funktion und heute morgen seh ich das auch noch -.-

du bist mein "retter" des tages^^
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Bestimmte Zeile einer Textdatei mit Batch auslesen
gelöst Frage von PinkFLuffyUnicornBatch & Shell2 Kommentare

Hi, ich habe ein kleines Batch Script, welches mir den Status der Firewall ausgeben soll(ob an oder aus) der ...

Batch & Shell
Bestimmte CMD Zeile aus Batch auslesen
gelöst Frage von BatchAnfaenger91Batch & Shell5 Kommentare

Hallo ihr Lieben, habe seit dem neusten Batch Sprache kennengelernt und bin dabei ein Batch Skript zu schreiben ich ...

Batch & Shell
Batch Zeile für Zeile auslesen und jede Zeile eine bestimmte Variable zuweisen
gelöst Frage von CerauxBatch & Shell4 Kommentare

Hallo, ich habe schon überall gesucht und noch nichts gefunden wie man Zeilen bestimme Variablen zuweist. Zum Beispiel: file.txt: ...

Batch & Shell
Textdatei Zeile für Zeile auslesen
Frage von RIPUEDBatch & Shell

Hallo, ich würde gerne mit einem Batch-Skript Zeilen aus einer Textdatei einzeln und nacheinander auslesen und diese dann nach ...

Neue Wissensbeiträge
Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 55 MinutenInternet1 Kommentar

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registierunf von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Verschlüsselung & Zertifikate

19 Jahre alter Angriff auf TLS funktioniert immer noch

Information von BassFishFox vor 7 StundenVerschlüsselung & Zertifikate1 Kommentar

Interessant zu lesen. Der Bleichenbacher-Angriff gilt unter Kryptographen als Klassiker, trotzdem funktioniert er oft noch. Wie wir herausgefunden haben, ...

Windows 10

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 18 StundenWindows 103 Kommentare

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 20 StundenSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement16 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...

Netzwerkgrundlagen
Hi eine blöde frage. xD
Frage von 132954Netzwerkgrundlagen13 Kommentare

Also: Habe 2012 r2 essentials neuinstalliert, allerdings installiert diese version ja gleich diesen gangen AD kram mit, den hab ...