markuszieg
Goto Top

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:

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....

Content-ID: 2177528250

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

Ausgedruckt am: 24.11.2024 um 22:11 Uhr

niveade
niveade 16.03.2022 um 01:21:29 Uhr
Goto Top
MarkusZieg
MarkusZieg 16.03.2022 aktualisiert um 08:23:30 Uhr
Goto Top
Guten Morgen,

ich hatte auch in den alten Threads gesucht aber das habe ich nicht gefunden. Jetzt funktioniert es das kein Fehler mehr angezeigt wird, jedoch werden jetzt teilweise Spalten einfach unterschlagen. Trotzdem vielen Dank! Vllt finde ich den anderen Fehler ja jetzt oder es sieht jemand noch einen Fehler