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

Wert aus Textzeile prüfen und ganze Zeile in neue Textdatei verschieben

Frage Entwicklung Batch & Shell

Mitglied: marsl84

marsl84 (Level 1) - Jetzt verbinden

23.12.2010 um 10:46 Uhr, 3989 Aufrufe, 5 Kommentare

Hallo alle zusammen,

ich habe mal wieder ein Problem, bei welchen mir keine Lösung einfällt und ich auch keine finden kann

Ich möchte aus einer Textdatei jede Zeile einzeln auslesen, den 3. Wert überprüfen und wenn dieser 3. Wert der Bedienung entspricht, die ganze Zeile in Textdatei A schreiben, wenn nicht, die ganze Zeile in Textdatei B schreiben.

Mein Lösungsansatz bis jetzt:

01.
 
02.
for /f "tokens=3 delims=!" %%m in (Textdatei.txt) do ( 
03.
if %%m == bedinung ( 
04.
echo %%m >> textdatei_a.txt 
05.
) else ( 
06.
echo %%m >> textdatei_a.txt 
07.
08.
 
Aber leider schreibt er mir hier natürlich nur das ausgewertete Token in die neuen Textdateien. Ich könnte jetzt alle tokens auswerten (zB: tokens=1-10) und dann alle Variablen in die Textdatei schreiben (echo %%m %%n ... >> textdatei_a.txt) aber es sind über 50 Werte in der auszuwertenden Textdatei. Das geht ja nicht wenn ich mich nicht irre oder?!

Weiß jemand Rat?

Vielen Dank schon im voraus.

Grüße,
Marsl
Mitglied: bastla
23.12.2010 um 11:19 Uhr
Hallo marsl84!

Wenn der zu prüfende Wert "speziell" genug wäre (und daher nicht auch in einem anderen "token" vorkommen kann) sollte sich das mit
01.
findstr "!bedinung!" Textdatei.txt>>textdatei_a.txt 
02.
findstr /v "!bedinung!" Textdatei.txt>>textdatei_b.txt
lösen lassen - ansonsten könntest Du geschachtelte "for"-Schleifen versuchen:
01.
for /f "delims=" %%a in (Textdatei.txt) do ( 
02.
    for /f "tokens=3 delims=!" %%m in (%%a) do ( 
03.
    if %%m==bedinung ( 
04.
        echo %%a >> textdatei_a.txt 
05.
    ) else ( 
06.
        echo %%a >> textdatei_b.txt 
07.
08.
)
Grüße
bastla

P.S.: Ich wollte mit der Schreibweise "Bedingung" nicht noch eine Variante ins Spiel bringen - "Bedienung" und "bedinung" sollten für den Anfang genügen ...
Bitte warten ..
Mitglied: Biber
23.12.2010 um 11:24 Uhr
Moin marsi84,

du könntest eine äußere FOR/F-Anweisung zusätzlich vorschalten und dort die ganze Zeile (also FOR /F "delims="...) transportieren.

Sinngemäß und ungetestet:
01.
FOR /F "delims=" %%i in Textdatei.txt DO ( 
02.
    for /f "tokens=3 delims=!" %%m in ("%%i") do ( 
03.
            if "%%m" == "bedinung" ( 
04.
                 echo %%i>> textdatei_a.txt 
05.
           ) else ( 
06.
                echo %%i>> textdatei_b.txt 
07.
08.
)
Allerdings... ich würde erstmal prüfen, ob du es nicht einfacher mit "FindStr /i "bedingung" textdatei.txt" bzw. "FindStr /i /v "bedingung" textdatei.txt" gebacken bekommst.

Grüße
Biber
Bitte warten ..
Mitglied: marsl84
23.12.2010 um 12:26 Uhr
Hallo,

erstmal vielen Dank für eure Antworten

ich hab jetzt die Möglichkeit mit der zusätzlichen FOR Schleife ausprobiert. An sich scheint Sie zu funktionieren, problem ist nur, dass die Zeile in der 2. Schleife ohne Tokens ankommt?! Die ! sind verschwunden?!

Jemand eine Idee?

Danke und Grüße,
Marsl
Bitte warten ..
Mitglied: bastla
23.12.2010 um 12:47 Uhr
Hallo marsl84!

Wenn bei Dir auch in der ersten Schleife "delims=" steht, ist das eigentlich nur mit einer Verwendung von "setlocal enabledelayedexpansion" zu erklären ...

Grüße
bastla
Bitte warten ..
Mitglied: marsl84
23.12.2010 um 13:06 Uhr
Ja, das kann sein, weil ich mit "setlocal enabledelayedexpansion" arbeite. Aber egal, ich habe es jetzt mit findstr gelöst. ;)

Funktioniert super.

Vielen Dank euch und ein frohes Fest!!!!

Grüße,
Marsl
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Komplette Zeile aus Textdatei auslesen (3)

Frage von tegwert zum Thema Batch & Shell ...

Batch & Shell
gelöst Erstellungsdatum vor jede Zeile einer Textdatei schreiben (5)

Frage von freakonaleash zum Thema Batch & Shell ...

Batch & Shell
Jede Zeile einer Textdatei in eigene Variable speichern (5)

Frage von tomaschku zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch um Satz zwischen Anführungszeichen aus 1. Zeile in Textdatei lesen (3)

Frage von georg2204 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

Information von thomasreischer zum Thema Windows 10 ...

Microsoft

Die neuen RSAT-Tools für Win10 1709 sind da

(1)

Information von DerWoWusste zum Thema Microsoft ...

Humor (lol)

Wohnt jemand in Belgien und kann nicht mehr ruhig ausschlafen?

(6)

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

Heiß diskutierte Inhalte
Hosting & Housing
Mailserver Software Empfehlungen (21)

Frage von sunics zum Thema Hosting & Housing ...

Voice over IP
DeutschlandLAN IP Voice Data M Premium, Erfahrung mit Faxgeräte? (16)

Frage von liquidbase zum Thema Voice over IP ...

TK-Netze & Geräte
TK-Anlage VoIP - DECT Erweiterung (15)

Frage von Lynkon zum Thema TK-Netze & Geräte ...