parsoleathi
Goto Top

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!

Content-Key: 500677

Url: https://administrator.de/contentid/500677

Printed on: April 26, 2024 at 16:04 o'clock

Member: rubberman
Solution rubberman Oct 02, 2019 at 22:57:11 (UTC)
Goto Top
Wenn's denn Batch sein soll, könnte ich mir vorstellen dass das so in einem Rutsch abgefackelt werden könnte:
@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
Member: Parsoleathi
Parsoleathi Oct 03, 2019 at 10:02:56 (UTC)
Goto Top
Hallo Steffen und danke für deine schnelle Antwort!

Ich habe dein Script ausprobiert. Hammer! Danke!
Würdest du mir bitte noch kurz erklären, was die eine oder andere Zeile macht, damit ich es richtig übertragen kann und noch mal etwas lerne.

('type "!srcfile!"^|find /c /v ""')

for /l %%j in (1 1 %%i)

"!line:~,11!"=="PostalCode="

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?

Danke!
Britta
Member: rubberman
Solution rubberman Oct 03, 2019 at 10:27:02 (UTC)
Goto Top
Hallo Britta

('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
Member: Parsoleathi
Parsoleathi Oct 03, 2019 at 11:01:00 (UTC)
Goto Top
Hi Steffen,

vielen Dank für deine Erklärungen und Tipp bzgl der Sprache.
Ich werde es mir durch den Kopf gehen lassen und mir verschiedene Möglichkeiten ansehen.

Dank dir habe ich jedenfalls jetzt eine tolle Liste und muss nicht durch 2000Ordner und Dateien klicken!

Vielen Dank Batch-Dino face-smile
Member: rubberman
rubberman Oct 03, 2019 at 12:54:50 (UTC)
Goto Top
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