Komplexen String in einer Textdatei durch einen anderen ersetzen
Hallo zusammen,
ich versuche ein automatisches Buildscript zur Versionserstellung unserer Software zu erstellen.
Dafür brauche ich unter anderem ein Batch welches mir in einer Textdatei eine Versionsnummer automatisch hochzählt.
Leider scheitere ich schon an den Grundlagen. Mit folgendem Code-Schnipsel versuche ich die derzeitige Version aus der Textdatei auszulesen und mit einem neuen String zu ersetzen.
Die Textdatei enthält nur:
$$ LOCAL cVersion := "V7 016.00"$$
$$ LOCAL cVersion := "V7 016.01"$$
$$ LOCAL cVersion := "V7 016.02"$$
$$ LOCAL cVersion := "V7 016.03"$$
$$ LOCAL cVersion := "V7 016.04"$$
$$ LOCAL cVersion := "V7 016.05"$$
Nach der Ausführung des Batchs sollte die Datei dann so aussehen:
$$ LOCAL cVersion := "V7 016.00"$$
$$ LOCAL cVersion := "V7 016.01"$$
$$ LOCAL cVersion := "V7 016.02"$$
$$ LOCAL cVersion := "V7 016.04"$$
$$ LOCAL cVersion := "V7 016.04"$$
$$ LOCAL cVersion := "V7 016.05"$$
Das haut aber nicht hin. Kann mir hiermit jemand helfen?
ich versuche ein automatisches Buildscript zur Versionserstellung unserer Software zu erstellen.
Dafür brauche ich unter anderem ein Batch welches mir in einer Textdatei eine Versionsnummer automatisch hochzählt.
Leider scheitere ich schon an den Grundlagen. Mit folgendem Code-Schnipsel versuche ich die derzeitige Version aus der Textdatei auszulesen und mit einem neuen String zu ersetzen.
Die Textdatei enthält nur:
$$ LOCAL cVersion := "V7 016.00"$$
$$ LOCAL cVersion := "V7 016.01"$$
$$ LOCAL cVersion := "V7 016.02"$$
$$ LOCAL cVersion := "V7 016.03"$$
$$ LOCAL cVersion := "V7 016.04"$$
$$ LOCAL cVersion := "V7 016.05"$$
setLocal EnableDelayedExpansion
SET "filename=text.txt"
SET "OldVersion=$$ LOCAL cVersion := "V7 016.03"$$"
SET "NewVersion=$$ LOCAL cVersion := "V7 016.04"$$"
for /F "tokens=*" %%k IN (%filename%) DO (
@ECHO ON
IF %%k == %OldVersion% (ECHO TRUE)
)
Nach der Ausführung des Batchs sollte die Datei dann so aussehen:
$$ LOCAL cVersion := "V7 016.00"$$
$$ LOCAL cVersion := "V7 016.01"$$
$$ LOCAL cVersion := "V7 016.02"$$
$$ LOCAL cVersion := "V7 016.04"$$
$$ LOCAL cVersion := "V7 016.04"$$
$$ LOCAL cVersion := "V7 016.05"$$
Das haut aber nicht hin. Kann mir hiermit jemand helfen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 214780
Url: https://administrator.de/forum/komplexen-string-in-einer-textdatei-durch-einen-anderen-ersetzen-214780.html
Ausgedruckt am: 17.04.2025 um 04:04 Uhr
4 Kommentare
Neuester Kommentar
... und wenn nicht Powershell würde ich zu VBS raten:
Anmerkung: In einer Stringkonstanten enthaltene Anführungszeichen müssen verdoppelt werden.
Grüße
bastla
P.S.: Willkommen im Forum!
filename = "text.txt"
OldVersion = "$$ LOCAL cVersion := ""V7 016.03""$$"
NewVersion = "$$ LOCAL cVersion := ""V7 016.04""$$"
Set fso=CreateObject("Scripting.FileSystemObject")
T = fso.OpenTextFile(filename).ReadAll
If Instr(T, OldVersion) Then fso.CreateTextFile(filename).Write Replace(T, OldVersion, NewVersion)
Grüße
bastla
P.S.: Willkommen im Forum!
Hallo,
ja, einen Einzeiler für das cmd Shell Fenster kann ich dir auch anbieten:
lg.
PS: hej Downvoter, lass einen Kommentar da, damit ich auch noch was lernen kann!
ja, einen Einzeiler für das cmd Shell Fenster kann ich dir auch anbieten:
for /f "delims=" %a in (file.txt) do @for /f tokens^=2delims^=^" %b in ("%a") do @if "%~b"=="V7 016.03" (echo($$ LOCAL cVersion := "V7 016.04"$$) else echo(%a
PS: hej Downvoter, lass einen Kommentar da, damit ich auch noch was lernen kann!