Batch: 2 Wörter mit findstring aus txt file suchen und in richtiger Reihenfolge abspeichern
Hallo zusammen,
ich bin die letzten Tage ständig in eurem Forum, konnte aber noch nicht das richtige für mich übertragen. Außerdem bin ich keine Programmiererin (wäre es aber gern) und konnte mit den verlinkten älteren posts leider nicht viel anfangen.
Ich habe nun folgendes Problem:
Ich möchte gern eine Batch Datei erstellen, die mir eine Arbeit erleichtern soll.
Sie soll zwei Wörter aus einer Textdatei heraussuchen und in der gleichen Reihenfolge in eine weitere Textdatei speichern.
Urspung Textdatei:
PostalCode==77807
City==Bryan
Country==USA
State==TX
PostalCode==7620001
City==Santiago
Country==Chile
State==
Als Ausgabe möchte ich:
PostalCode==77807
City==Bryan
______________________
PostalCode==7620001
City==Santiago
______________________
usw.
Ich habe es bisher geschafft den Postalcode zu suchen und als Liste in Plz.txt zu speichern und in die Datei City.txt eine Liste mit den Städten.
Anschließend habe ich die Textdateien zu einer zusammengefügt, wobei ich zuerst alle Postalcodes bekam und im Anschluss alle Cities. Das bringt mir leider nichts.
Meine bisheriger "Erfolg" (abgeschrieben und angepasst):
@echo off &
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('findstr /C:"City" Liste.txt') do @(
echo %%i)>>City.txt
)
ich suche nun die Möglichkeit hier noch einen zweiten findstr Befehl einzufügen, der mir die Daten in richtiger Reihenfolge in eine Textdatei speichert.
Alternativ könnte man auch versuchen Zeile 1 aus plz.txt + Zeile1 aus City in Textdokument3.txt zu speichern. Dann Zeile 2 mit Zeile 2, usw.
Dies sind übrigens Beispiele! Die Wörter die ich suche haben hinter dem = eine einzigartige alphanumerische Zahlenfolge.
Ich hoffe ihr könnt mir helfen.
Vielen Dank schonmal im Voraus!
ich bin die letzten Tage ständig in eurem Forum, konnte aber noch nicht das richtige für mich übertragen. Außerdem bin ich keine Programmiererin (wäre es aber gern) und konnte mit den verlinkten älteren posts leider nicht viel anfangen.
Ich habe nun folgendes Problem:
Ich möchte gern eine Batch Datei erstellen, die mir eine Arbeit erleichtern soll.
Sie soll zwei Wörter aus einer Textdatei heraussuchen und in der gleichen Reihenfolge in eine weitere Textdatei speichern.
Urspung Textdatei:
PostalCode==77807
City==Bryan
Country==USA
State==TX
PostalCode==7620001
City==Santiago
Country==Chile
State==
Als Ausgabe möchte ich:
PostalCode==77807
City==Bryan
______________________
PostalCode==7620001
City==Santiago
______________________
usw.
Ich habe es bisher geschafft den Postalcode zu suchen und als Liste in Plz.txt zu speichern und in die Datei City.txt eine Liste mit den Städten.
Anschließend habe ich die Textdateien zu einer zusammengefügt, wobei ich zuerst alle Postalcodes bekam und im Anschluss alle Cities. Das bringt mir leider nichts.
Meine bisheriger "Erfolg" (abgeschrieben und angepasst):
@echo off &
setlocal enabledelayedexpansion
for /f "delims=" %%i in ('findstr /C:"City" Liste.txt') do @(
echo %%i)>>City.txt
)
ich suche nun die Möglichkeit hier noch einen zweiten findstr Befehl einzufügen, der mir die Daten in richtiger Reihenfolge in eine Textdatei speichert.
Alternativ könnte man auch versuchen Zeile 1 aus plz.txt + Zeile1 aus City in Textdokument3.txt zu speichern. Dann Zeile 2 mit Zeile 2, usw.
Dies sind übrigens Beispiele! Die Wörter die ich suche haben hinter dem = eine einzigartige alphanumerische Zahlenfolge.
Ich hoffe ihr könnt mir helfen.
Vielen Dank schonmal im Voraus!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 500677
Url: https://administrator.de/forum/batch-2-woerter-mit-findstring-aus-txt-file-suchen-und-in-richtiger-reihenfolge-abspeichern-500677.html
Ausgedruckt am: 24.05.2025 um 04:05 Uhr
5 Kommentare
Neuester Kommentar
Wenn's denn Batch sein soll, könnte ich mir vorstellen dass das so in einem Rutsch abgefackelt werden könnte:
Steffen
@echo off &setlocal
set "srcfile=Liste.txt"
set "dstfile=out.txt"
setlocal EnableDelayedExpansion
<"!srcfile!" >"!dstfile!" (
for /f %%i in ('type "!srcfile!"^|find /c /v ""') do for /l %%j in (1 1 %%i) do (
set "line=" &set /p "line="
if defined line if /i "!line:~,11!"=="PostalCode=" (
set "zip=!line!"
) else if /i "!line:~,5!"=="City=" (
echo(!zip!
echo(!line!
echo(______________________
)
)
)
Steffen
Hallo Britta
Steffen
('type "!srcfile!"^|find /c /v ""')
Zähle die Zeilen in der Eingangsdatei und ...for /l %%j in (1 1 %%i)
... laufe so viele Schleifeniterationen wie es Zeilen in der Datei gibt, um sie einzeln mittels SET /P der Variablen line zuzuweisen."!line:~,11!"=="PostalCode="
Gehört zum IF Statement. Wenn die ersten 11 Zeichen der Zeile gleich dem String PostalCode= sind, dann...Ich würde mich gern mehr mit Programmierung beschäftigen. In meiner Firma ist SQL wichtig. Ist das für Einsteiger geeignet, oder welche Sprache würdest du empfehlen?
SQL Scripting ist dann zu empfehlen, wenn du es brauchst. Du kannst damit aber nicht mehr tun, als auf Datenbankinhalte zuzugreifen. Ansonsten kann ich dir eigentlich nur raten dich nicht mehr mit Batch zu beschäftigen. Das stirbt mit Dinosaurier wie mir aus. Was du statt dessen lernen solltest, hängt hochgradig davon ab was du mittelfristig für einen Zweck damit verfolgen willst und welche Sprachsyntax dir liegt. Die Frage nach der geeigneten Sprache für dich persönlich lässt sich also ohne halbseitiges Essay deinerseits leider nicht mal im Ansatz beantworten.Steffen
Wenn es dir hauptsächlich um das Schreiben von Scripts geht, die dir durch Automation von stupiden Aufgaben das Daily Business etwas erleichtern sollen, dann ist unter Windows die PowerShell zum Quasi-Standard herangewachsen und hat Batch aus dieser Rolle verdrängt. Sollte an dieser Stelle vielleicht nicht unerwähnt bleiben. Sie bietet dir die Möglichkeit auf alles was das .NET Framework mitbringt zuzugreifen und verdient das Wort "Power" im Name zu Recht. Allerdings ist die typische PowerShell Syntax mit nichts wirklich vergleichbar, was nicht hilfreich ist wenn du mal auf eine andere Sprache umsteigst und du auf Gelerntes zurückgreifen willst.
Steffen
Steffen