Mittels Batch eine Textdatei auslesen und gleichzeitig neue schreiben
Ich möchte mit einer Batch-Datei einen Ordner voller Textdateien auslesen. Diese sollen nun ausgelesen werden. Der Inhalt dieser Textdateien soll in eine seperate Textdatei nacheinander stehen.
Hallo,
ich habe hunderte Textdateien.
Diese sollen nun nacheinander abgearbeitet werden und einige Formatierungen dabei entfernen und schließlich das Ergebnis in eine txt Datei schreiben.
Beispiel:
LOG.txt sieht so aus:
TRASH
TRASH
USER: (TAB) ABC
COMPUTERNAME: (TAB) DEF
DATE: (TAB) GHI
Davon sind hunderte in einem Ordner.
Nun soll jede Textdatei ausgelesen werden und das Ergebnis in eine AUSWERTUNG.txt fließen.
Also in etwa so:
USER - COMPUTERNAME
USER VON FILE1 COMPUTER VON FILE1
USER VON FILE2 COMPUTER VON FILE2
...
usw.
Wie genau mache ich das? Hat jemand eine Idee?
Danke
hanswurst12
Hallo,
ich habe hunderte Textdateien.
Diese sollen nun nacheinander abgearbeitet werden und einige Formatierungen dabei entfernen und schließlich das Ergebnis in eine txt Datei schreiben.
Beispiel:
LOG.txt sieht so aus:
TRASH
TRASH
USER: (TAB) ABC
COMPUTERNAME: (TAB) DEF
DATE: (TAB) GHI
Davon sind hunderte in einem Ordner.
Nun soll jede Textdatei ausgelesen werden und das Ergebnis in eine AUSWERTUNG.txt fließen.
Also in etwa so:
USER - COMPUTERNAME
USER VON FILE1 COMPUTER VON FILE1
USER VON FILE2 COMPUTER VON FILE2
...
usw.
Wie genau mache ich das? Hat jemand eine Idee?
Danke
hanswurst12
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 119432
Url: https://administrator.de/contentid/119432
Ausgedruckt am: 19.11.2024 um 17:11 Uhr
6 Kommentare
Neuester Kommentar
Willkommen im Forum.
Dein gewähltes Synonym lässt nicht unbedingt auf ernsthafte Absichten schließen (wir hatten hier letztens so viele Kasper) und deine Angaben reichen nicht aus, eine Beziehung zwischen den Daten und der Auswertung herzustellen.
Vielleicht überarbeitest du das nochmal.
Gruß
LotPings
Dein gewähltes Synonym lässt nicht unbedingt auf ernsthafte Absichten schließen (wir hatten hier letztens so viele Kasper) und deine Angaben reichen nicht aus, eine Beziehung zwischen den Daten und der Auswertung herzustellen.
Vielleicht überarbeitest du das nochmal.
Gruß
LotPings
... oder nimmst eine Anleihe bei diesem Beitrag, wobei die "for /f"-Zeilen für Deine Daten generell einfach mit
beginnen könnten und Dein gewünschter Wert dann immer in %%b zu finden sein sollte. Ein "/b" beim "findstr" könnte zusätzlich für mehr Sicherheit sorgen (siehe "findstr /?").
Grüße
bastla
for /f "tokens=1*" %%a ...
Grüße
bastla
Hallo zusammen,
ich hab vor, aus einer Textdatei, die es mehrere Male gibt und auf den Namen "Defcore.txt" lautet, zwei Zeilen zu entnehmen und in eine neue Textdatei einzufügen.
Das Beispiel von hanswurst12 habe ich genommen und entsprechend abgeändert:
Leider behauptet der jetzt, das Verzeichnis würde nicht exisitieren, dabei hab ich extra die Anführungszeichen hinzugesetzt. Oder bin ich bei meiner Idee komplett falsch?
Das Verzeichnis "ModernCombat.c4d" ist ein SVN Verzeichnis und wird regelmäßig geupdatet. Da ich die entsprechenden IDs in den Scripts immer wieder verwende, ist eine Liste gut, in der alle verwendeten IDs gelistet sind. Diese IDs sind in der "Defcore.txt" hinterlegt. Zusätzlich zur Zeile "ID=xxxx" brauch ich aber auch noch "Name=xxxx" sonst weiß ich ja nicht, was es für ein Objekt ist.
Vielleicht kann mir jemand eine helfende Hand reichen.
Gruß,
Switchblade
ich hab vor, aus einer Textdatei, die es mehrere Male gibt und auf den Namen "Defcore.txt" lautet, zwei Zeilen zu entnehmen und in eine neue Textdatei einzufügen.
Das Beispiel von hanswurst12 habe ich genommen und entsprechend abgeändert:
@echo off & setlocal enabledelayedexpansion
set "Verzeichnis="D:\Full Version Games\Clonk Rage\ModernCombat.c4d""
set "Typ=txt"
set "Liste="D:\Full Version Games\Clonk Rage\ID.txt""
if exist "%ID%" del "%ID%"
for %%i in ("%Verzeichnis%\*.%Typ%") do (
for /f "tokens=2*" %%a in ('findstr /i /id="%%i"') do set "Zeile=%%a"
for /f "tokens=2*" %%a in ('findstr /i /Name="%%a"') do echo !Zeile! - %%a
)>>"%ID%"
Leider behauptet der jetzt, das Verzeichnis würde nicht exisitieren, dabei hab ich extra die Anführungszeichen hinzugesetzt. Oder bin ich bei meiner Idee komplett falsch?
Das Verzeichnis "ModernCombat.c4d" ist ein SVN Verzeichnis und wird regelmäßig geupdatet. Da ich die entsprechenden IDs in den Scripts immer wieder verwende, ist eine Liste gut, in der alle verwendeten IDs gelistet sind. Diese IDs sind in der "Defcore.txt" hinterlegt. Zusätzlich zur Zeile "ID=xxxx" brauch ich aber auch noch "Name=xxxx" sonst weiß ich ja nicht, was es für ein Objekt ist.
Vielleicht kann mir jemand eine helfende Hand reichen.
Gruß,
Switchblade
Moin Switchblade,
willkommen im Forum.
Ich habe Deinen Schnipsel mal in Code-Tags gesetzt.
Wenn Diu noch mal mit "Editieren" rein gehst, dann siehst Du für das nächste Mal wie leicht das geht.
Zu Deiner Frage:
Schau Dir nochmal kurz die Hilfe zu FindStr an (FindStr /? am CMD-Prompt)
So wie Du es in dem FOR-Anweisungsblock formiliert hast, werden /Id ind /Name als Findstr-Parameter aufgefasst, falls der Schnipsel so weit kommen würde.
Aber vorher geht auch schon irgendwas schräg mit den Variablen
Grüße
Biber
willkommen im Forum.
Ich habe Deinen Schnipsel mal in Code-Tags gesetzt.
Wenn Diu noch mal mit "Editieren" rein gehst, dann siehst Du für das nächste Mal wie leicht das geht.
Zu Deiner Frage:
Schau Dir nochmal kurz die Hilfe zu FindStr an (FindStr /? am CMD-Prompt)
So wie Du es in dem FOR-Anweisungsblock formiliert hast, werden /Id ind /Name als Findstr-Parameter aufgefasst, falls der Schnipsel so weit kommen würde.
Aber vorher geht auch schon irgendwas schräg mit den Variablen
- %id% (die nie gesetzt wird) und
- %Liste% (die gesetzt, aber nie verwendet wird.
Grüße
Biber
Hallo Biber,
danke für die Begrüßung.
Okay, die Code-Tags sind wie die HTML-Tags für's fett und kursiv machen etc., das hab ich verstanden.
Schnipsel ist gut, die Batch-Datei enthält ja nicht mehr. Ist also vollständig. ;)
Die Variablen sind wahrscheinlich nötig, da sich die entsprechende ID immer wieder ändern kann und aus Zahlen, Buchstaben sowie Underline _ bestehen kann. Für die Liste brauch ich dann wohl keine.
Ehrlich gesagt hab ich keinen Schimmer wie die Datei abläuft, bei ganz einfachen Konstrukten ist das für mich nachvollziehbar. In diesem Fall hab ich jedoch wirklich nur kopiert und die entsprechenden Stellen so abgeändert wie sie für mich Sinn ergeben haben.
Zeile 6 kann ich wohl getrost löschen, %%i stellt wohl einen Integer (als Zahl) dar. Der %%a dann einen Buchstabencode. %Verzeichnis% gibt das oben mit set angegebene Verzeichnis an. Dasselbe für die anderen beiden Anweisungen.
Für For hab ich mir auch nochmal die Hilfe angesehen. %%i und %%a sind demnach Variablen für ein Batchprogramm, so wie ich sie brauche. Nur werden die beiden wohl gar nicht benutzt, weil sie nicht benannt sind?
Gruß,
Switchblade
Edit:
Okay, nach einer ernsthaften Auseinandersetzung mit dem FINDSTR Befehle, kann ich nun ein Ergebnis vorweisen:
Groß- und Kleinschreibung wird ignoriert. In beiden SVN Verzeichnissen wird nach den Zeichenfolgen "id=" und "Name=" gesucht und diese gefundenen Ergebnisse in eine Textdatei mit dem Namen "IDandNAMES.txt" geschrieben.
Nochmals vielen Dank an Biber, der mich auf die richtige Spur brachte.
danke für die Begrüßung.
Okay, die Code-Tags sind wie die HTML-Tags für's fett und kursiv machen etc., das hab ich verstanden.
Schnipsel ist gut, die Batch-Datei enthält ja nicht mehr. Ist also vollständig. ;)
Die Variablen sind wahrscheinlich nötig, da sich die entsprechende ID immer wieder ändern kann und aus Zahlen, Buchstaben sowie Underline _ bestehen kann. Für die Liste brauch ich dann wohl keine.
Ehrlich gesagt hab ich keinen Schimmer wie die Datei abläuft, bei ganz einfachen Konstrukten ist das für mich nachvollziehbar. In diesem Fall hab ich jedoch wirklich nur kopiert und die entsprechenden Stellen so abgeändert wie sie für mich Sinn ergeben haben.
Zeile 6 kann ich wohl getrost löschen, %%i stellt wohl einen Integer (als Zahl) dar. Der %%a dann einen Buchstabencode. %Verzeichnis% gibt das oben mit set angegebene Verzeichnis an. Dasselbe für die anderen beiden Anweisungen.
Für For hab ich mir auch nochmal die Hilfe angesehen. %%i und %%a sind demnach Variablen für ein Batchprogramm, so wie ich sie brauche. Nur werden die beiden wohl gar nicht benutzt, weil sie nicht benannt sind?
Gruß,
Switchblade
Edit:
Okay, nach einer ernsthaften Auseinandersetzung mit dem FINDSTR Befehle, kann ich nun ein Ergebnis vorweisen:
@echo off
findstr /S /I /D:ModernCombat.c4d;ModernCombat.c4f /C:"Name=" /C:"id=" defcore.txt >>IDandNAMES.txt
Groß- und Kleinschreibung wird ignoriert. In beiden SVN Verzeichnissen wird nach den Zeichenfolgen "id=" und "Name=" gesucht und diese gefundenen Ergebnisse in eine Textdatei mit dem Namen "IDandNAMES.txt" geschrieben.
Nochmals vielen Dank an Biber, der mich auf die richtige Spur brachte.