Zeichen in TXT Textdatei suchen und mehrzeiligen Text anhängen
Hallo,
leider benötige ich wieder etwas Hilfe, da dieser Anwendungsfall für mich noch etwas zu hoch ist.
Das Suchen und Ersetzen von Zeichen in Dateien würde ich hinbekommen, aber die Anforderung ist etwas komplexer.
- ALLE Dateien beinhalten einen individuellen Text
- ALLE Dateien besitzen eine leere letzte Zeile
- ALLE Dateien besitzen eine vorletzte Zeile mit einem Ausrufezeichen "!"
Aufgabe:
Es soll im Grunde die Zeile mit "!" ermittelt werden, aus Sicherheitsgründen.
Anschließend soll in der Zeile davor ein "\" hinzugefügt werden, sowie weitere 3 Zeilen Text.
Beispiel Textdatei:
Ergebnis sollte so aussehen:
Danke für Hilfe
leider benötige ich wieder etwas Hilfe, da dieser Anwendungsfall für mich noch etwas zu hoch ist.
Das Suchen und Ersetzen von Zeichen in Dateien würde ich hinbekommen, aber die Anforderung ist etwas komplexer.
- ALLE Dateien beinhalten einen individuellen Text
- ALLE Dateien besitzen eine leere letzte Zeile
- ALLE Dateien besitzen eine vorletzte Zeile mit einem Ausrufezeichen "!"
Aufgabe:
Es soll im Grunde die Zeile mit "!" ermittelt werden, aus Sicherheitsgründen.
Anschließend soll in der Zeile davor ein "\" hinzugefügt werden, sowie weitere 3 Zeilen Text.
Beispiel Textdatei:
mein Text;\
mein Text;\
mein Text;
!
Ergebnis sollte so aussehen:
mein Text;\
mein Text;\
mein Text;\
weitere Zeile Text;\
weitere Zeile Text;\
!
Danke für Hilfe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 422595
Url: https://administrator.de/contentid/422595
Ausgedruckt am: 08.11.2024 um 05:11 Uhr
14 Kommentare
Neuester Kommentar
PS
(gc 'c:\datei.txt' -raw) -replace '[\r\n]+!\Z',"\`r`nweitere Zeile;\`r`nund noch eine;\`r`n!" | sc 'c:\datei_neu.txt'
Wow, rückständig hoch drei... Hindert dich doch keiner dran das inne Batch reinzupacken ...
Gestellte Hausaufgaben der Berufsschule machst du in Zukunft bitte selber. Manohman ist das hier ein Verein...
@echo off
Powershell -Executionpolicy ByPass -Command "(gc 'c:\datei.txt' -raw) -replace '[\r\n]+!\Z',\"\`r`nweitere Zeile;\`r`nund noch eine;\`r`n!\" | sc 'c:\datei_neu.txt'"
Gestellte Hausaufgaben der Berufsschule machst du in Zukunft bitte selber. Manohman ist das hier ein Verein...
Zitat von @chgs2011:
Das ist alles richtig, aber bei uns ist PowerShell generell geblockt, aus Sicherheitsgründen!
Der war gut 😀😀😀😀Das ist alles richtig, aber bei uns ist PowerShell generell geblockt, aus Sicherheitsgründen!
Du brauchst nur eine For-Schleife und findstr. Jetzt bist du dran.
Ja nee ist klar. For Schleife und findstr ist Batch min Jung! Und wenn du nicht in der Lage bist mit den Hinweisen zumindest die Grundlagen dazu zu googlen bist du hier falsch.
Tutorial zur FOR-Schleife
Das ist ein Administrator-Forum kein Hausaufgabenforum.
Tutorial zur FOR-Schleife
Das ist ein Administrator-Forum kein Hausaufgabenforum.
Hallo chgs2011,
Wie wäre es mit einer For-Schleife und type?
Codeskizze:
Gruß Frank
Wie wäre es mit einer For-Schleife und type?
Codeskizze:
For zeileninhalt (type datei) do (
if zeileninhalt=="!" (
echo zweitere Zeile Text;\>>neuedatei.txt
echo zweitere Zeile Text;\>>neuedatei.txt
echo !>>neuedatei.txt
)
else (
if not zeileninhalt_letztesZeichen=="\" (echo zeileninhalt\>>neuedatei.txt)
else (echo zeileninhalt>>neuedatei.txt)
)
)
echo(>>neuedatei.txt
Gruß Frank
Hallo chgs2011,
Mein Ansatz ist etwas anders:
Es wird geprüft, ob eine Zeile mit einem Backslash endet und falls nicht wird ein Backslash angehängt.
Das wird für alle Zeilen ausgeführt, es sei denn die Zeile bestünde lediglich aus einem Ausrufezeichen.
In dem Fall wird ein Ausrufezeichen ausgegeben, aber zuvor werden zwei zusätzliche Zeilen ausgegeben.
Der Unterschied ist also:
Nicht zwei Zeilen nach "ohne Backslash", sondern zwei Zeilen vor "nur Ausrufezeichen" einfügen.
Im Ergebnis sollte das aber keinen Unterschied machen.
Bei mir läuft nicht mal ein Test, erhalte aber auch keinen Quellcode von Dir.
Gruß Frank
Zitat von @chgs2011:
Das Batch soll die Zeilennummer ermitteln, in dem kein "\" vorkommen, dort eines anfügen und 2 weitere Zeilen direkt anhängen.
wozu sollte die Batch die Zeilennummer ermitteln?Das Batch soll die Zeilennummer ermitteln, in dem kein "\" vorkommen, dort eines anfügen und 2 weitere Zeilen direkt anhängen.
Mein Ansatz ist etwas anders:
Es wird geprüft, ob eine Zeile mit einem Backslash endet und falls nicht wird ein Backslash angehängt.
Das wird für alle Zeilen ausgeführt, es sei denn die Zeile bestünde lediglich aus einem Ausrufezeichen.
In dem Fall wird ein Ausrufezeichen ausgegeben, aber zuvor werden zwei zusätzliche Zeilen ausgegeben.
Der Unterschied ist also:
Nicht zwei Zeilen nach "ohne Backslash", sondern zwei Zeilen vor "nur Ausrufezeichen" einfügen.
Im Ergebnis sollte das aber keinen Unterschied machen.
Bei mir läuft nicht mal ein Test, erhalte aber auch keinen Quellcode von Dir.
Gruß Frank
Hallo chgs2011,
Das sind Beispiele für Deine Quell- und Zieldatei, nicht der Quellcode.
Wenn Du uns nicht zeigst was Du programmiert hast, wie sollen wir dann sehen können wo Deine Fehler liegen und was Du ändern musst, damit es läuft?
Gruß Frank
Das sind Beispiele für Deine Quell- und Zieldatei, nicht der Quellcode.
Zitat von @chgs2011:
OK, wäre so natürlich eleganter ... wie gesagt läuft das Script bei mir leider nicht, um es zu testen.
Was meinst du mit Quellcode?
Genau das Script meine ich, das bei Dir nicht läuft.OK, wäre so natürlich eleganter ... wie gesagt läuft das Script bei mir leider nicht, um es zu testen.
Was meinst du mit Quellcode?
Wenn Du uns nicht zeigst was Du programmiert hast, wie sollen wir dann sehen können wo Deine Fehler liegen und was Du ändern musst, damit es läuft?
Gruß Frank