Wörter austauschen trotz leerer Absätze
Guten Abend,
ich habe da mal eine Frage an die Batch-Affinen unter euch.
Zunächst der grobe Aufbau meines Batch Programmes. Ich habe eine Text Datei (keywords.txt) indem ein Index und zwei Wörtern angegeben sind, die getauscht werden sollen. Nun starte ich die Batch Datei, diese nimmt aus dem Ordner Source eine Datei und dupliziert diese so oft, je nachdem wie hoch der Index aus der Text Datei ist. Also bei Index 8, wird die Datei aus Source 8 mal dupliziert und dann von 1-8 nummeriert. Nun liest die Batch Datei aus der Text Datei das 1. Tauschwort aus und tauscht dieses in den duplizierten Dateien je nachdem welche Nummer diese hat. Beispiel: In Datei 3 wird das Wort Dut1 gegen das Wort Dut3 getauscht. in Datei 4 dann gegen Dut4 usw.
Diese Funktion läuft auch und macht soweit keine Probleme (man mag es kaum glauben). Jedoch macht das Programm eine Sache die ich nicht verstehe. Leere Absätze werden gegen ein "ECHO ist ausgeschaltet (OFF)" getauscht. Also nicht Absätze in denen ein Wort getauscht wurde sondern nur Zeilen in denen nix stand. Da ich die Datei aber durch ein weiteres Programm jage darf dies nicht passieren.
Vor dem Tausch:
on timer timerForCyclicUpdateDesiredValueOfDut2{
float functionCyclePosition;
Sollwerte, Funktionsaufschaltungen und Rampen vom AUSY verarbeiten
Nach dem Tausch:
on timer timerForCyclicUpdateDesiredValueOfDut2{
float functionCyclePosition;
ECHO ist ausgeschaltet (OFF).
Sollwerte, Funktionsaufschaltungen und Rampen vom AUSY verarbeiten
Ich bin mir sicher es liegt nicht an dem Dut2 der getauscht wurde sondern an den leeren Absätzen.
Hier mein Code den ich zum tauschen nutze:
Da mein Code komplett funktioniert und bis auf den einen kleinen Fehler nicht perfekt läuft, wäre PowerShell keine Alternative. Falls jemand eine andere Lösung zum ersetzen der Wörter hat, wäre ich natürlich auch bereit diese zu testen. Vielen Dank schonmal für die Hilfe!
Markus
PS: Ja Variablen sollten nicht KlausDieter oder Torsten heißen aber ja....
ich habe da mal eine Frage an die Batch-Affinen unter euch.
Zunächst der grobe Aufbau meines Batch Programmes. Ich habe eine Text Datei (keywords.txt) indem ein Index und zwei Wörtern angegeben sind, die getauscht werden sollen. Nun starte ich die Batch Datei, diese nimmt aus dem Ordner Source eine Datei und dupliziert diese so oft, je nachdem wie hoch der Index aus der Text Datei ist. Also bei Index 8, wird die Datei aus Source 8 mal dupliziert und dann von 1-8 nummeriert. Nun liest die Batch Datei aus der Text Datei das 1. Tauschwort aus und tauscht dieses in den duplizierten Dateien je nachdem welche Nummer diese hat. Beispiel: In Datei 3 wird das Wort Dut1 gegen das Wort Dut3 getauscht. in Datei 4 dann gegen Dut4 usw.
Diese Funktion läuft auch und macht soweit keine Probleme (man mag es kaum glauben). Jedoch macht das Programm eine Sache die ich nicht verstehe. Leere Absätze werden gegen ein "ECHO ist ausgeschaltet (OFF)" getauscht. Also nicht Absätze in denen ein Wort getauscht wurde sondern nur Zeilen in denen nix stand. Da ich die Datei aber durch ein weiteres Programm jage darf dies nicht passieren.
Vor dem Tausch:
on timer timerForCyclicUpdateDesiredValueOfDut2{
float functionCyclePosition;
Sollwerte, Funktionsaufschaltungen und Rampen vom AUSY verarbeiten
Nach dem Tausch:
on timer timerForCyclicUpdateDesiredValueOfDut2{
float functionCyclePosition;
ECHO ist ausgeschaltet (OFF).
Sollwerte, Funktionsaufschaltungen und Rampen vom AUSY verarbeiten
Ich bin mir sicher es liegt nicht an dem Dut2 der getauscht wurde sondern an den leeren Absätzen.
Hier mein Code den ich zum tauschen nutze:
set /a loop=0
:installieren
set /a loop=%loop%+1
SET "quell_datei=cache\%KlausDieter:~0,-5%%loop%.cin"
SET "ziel_datei=cache1\%KlausDieter:~0,-5%%loop%.cin"
SET "suchen_nach=%Torsten%1"
SET "ersetzen_durch=%Torsten%%loop%"
IF NOT DEFINED suchen_nach (ECHO Fehler: Die Variable suchen_nach nicht definiert^^!&GOTO :eof)
IF EXIST %ziel_datei% (DEL /f %ziel_datei% 1>NUL 2>NUL)
FOR /f "delims=" %%i IN ('FINDSTR . "%quell_datei%"') DO (
SET zeile=%%i& CALL :ersetzen !zeile!
)
GOTO :weiter
:ersetzen
SET zeile=!zeile:%suchen_nach%=%ersetzen_durch%!
IF [!zeile!] EQU (ECHO.>>%ziel_datei%) ELSE (ECHO !zeile!>>%ziel_datei%) 2>NUL
GOTO :eof
:weiter
set installel=%errorlevel%
if %loop%==%count% goto fall
if %installel%==0 goto installieren
:fall
echo.
echo In %KlausDieter:~0,-6% wurde das 1. Wort ersetzt.
Da mein Code komplett funktioniert und bis auf den einen kleinen Fehler nicht perfekt läuft, wäre PowerShell keine Alternative. Falls jemand eine andere Lösung zum ersetzen der Wörter hat, wäre ich natürlich auch bereit diese zu testen. Vielen Dank schonmal für die Hilfe!
Markus
PS: Ja Variablen sollten nicht KlausDieter oder Torsten heißen aber ja....
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 2177528250
Url: https://administrator.de/contentid/2177528250
Ausgedruckt am: 24.11.2024 um 22:11 Uhr
2 Kommentare
Neuester Kommentar