Substring in einer Textvariablen ersetzen
Hallo,
meine *.bat liest aus einer Textdatei die Textzeilen aus und befüllt damit Batch-Variablen.
Nun möchte ich in der Textdatei nicht nur fixe, absolute Strings hinterlegen.
Teile dieser Strings sollen nachher durch andere Batch-Variablen ersetzt werden.
In der Textdatei steht bspw.
strWert01=<Name> ist müde.
Nach dem Einlesen habe ich in der Batch die Variable strWert01 inkl. dem Wert "<Name> ist müde."
Passt. Funktioniert.
Nun möchte ich nach dem Einlesen in die Batch den Substring <Name> ersetzen durch eine andere vorhandene Batch-Variable, nämlich strName:
Ich nehme an, das Ersetzen des Teilstrings geht so ähnlich ... aber es will nicht:
set strWert01=%%strWert01:<Name>=%strName%%%
Was mache ich falsch?
Sind die <> das Problem?
Grüße
Donny
meine *.bat liest aus einer Textdatei die Textzeilen aus und befüllt damit Batch-Variablen.
Nun möchte ich in der Textdatei nicht nur fixe, absolute Strings hinterlegen.
Teile dieser Strings sollen nachher durch andere Batch-Variablen ersetzt werden.
In der Textdatei steht bspw.
strWert01=<Name> ist müde.
Nach dem Einlesen habe ich in der Batch die Variable strWert01 inkl. dem Wert "<Name> ist müde."
Passt. Funktioniert.
Nun möchte ich nach dem Einlesen in die Batch den Substring <Name> ersetzen durch eine andere vorhandene Batch-Variable, nämlich strName:
Ich nehme an, das Ersetzen des Teilstrings geht so ähnlich ... aber es will nicht:
set strWert01=%%strWert01:<Name>=%strName%%%
Was mache ich falsch?
Sind die <> das Problem?
Grüße
Donny
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 311753
Url: https://administrator.de/contentid/311753
Ausgedruckt am: 22.11.2024 um 08:11 Uhr
3 Kommentare
Neuester Kommentar
Hi,
use delayedexpansion or call set
For the call set variant see my comment in this thread
Variable über Wert aussuchen
Regards
use delayedexpansion or call set
@echo off & setlocal enabledelayedexpansion
set "strWert01=<Name> ist muede"
set "strName=Henry"
set "strWert01=!strWert01:<Name>=%strName%!"
echo %strWert01%
For the call set variant see my comment in this thread
Variable über Wert aussuchen
Regards
You don't even need to escape < and > as long as you enclose the assignments into quotation marks.
Regards
rubberman
Donny
Wenn du die Wahl hast, such dir was anderes aus, als < und >. [ und ] wären bspw. sicherer bei der Verarbeitung mit Batch.
Grüße
rubberman
/EDIT
highload hat seinen Kommentar geändert. Ursprünglich hatte er die Zeichen mit einem Caret maskiert (^< und ^>), was du dann benötigen würdest, wenn eine Zeichenfolge mit diesen Zeichen nicht in Anführungszeichen gesetzt wird.
Regards
rubberman
Donny
Wenn du die Wahl hast, such dir was anderes aus, als < und >. [ und ] wären bspw. sicherer bei der Verarbeitung mit Batch.
Grüße
rubberman
/EDIT
highload hat seinen Kommentar geändert. Ursprünglich hatte er die Zeichen mit einem Caret maskiert (^< und ^>), was du dann benötigen würdest, wenn eine Zeichenfolge mit diesen Zeichen nicht in Anführungszeichen gesetzt wird.