![]() |
[Batch] Text ersetzen
Hallo,
ich versuche gerade, mittels Batch-Skript ein Template zu füllen. So sieht das Beispiel-Template aus: Zitat:
Jetzt möchte ich alle '#' durch einen anderen Text ersetzen (den ich aus einer Datei lade). Hier mein bisheriger Ansatz:
Code:
@echo off
setLocal EnableDelayedExpansion for /f "eol= tokens=* delims= usebackq" %%a in (%templateFile%) do ( set line=%%a {* aktuelle Zeile aus dem Template *} set replace=!replaceText! {* Text, mit dem alle vorkommenden '#' ersetzt werden soll, enthält hier 'Nr' *} set line=!!line!:#=!replace!! {* Ersetzen, hier liegt das Problem *} echo.!line!>> %outputFile% {* in Ergebnisdatei schreiben *} ) Folgendes kommt bei raus: Zitat:
Gibts hier nen Guru, der mir weiterhelfen kann? Ich glaub, ich hab das mit den ! noch nicht ganz verstanden. :( Gruß, Björn |
AW: [Batch] Text ersetzen
Hallo Björn,
das Ersetzungsproblem für sich genommen kannst Du vielleicht so lösen:
Code:
Grüße vom marabu
@echo off
setlocal EnableDelayedExpansion for /f "delims= tokens=*" %%a in (template.txt) do ( set line=%%a echo !line:#=Nr! ) |
AW: [Batch] Text ersetzen
Hab es mittlerweile mit einer kleinen Hilfsfunktion gelöst. Geht vielleicht auch kürzer, aber so ist es leicht lesbar und verständlich:
Code:
Aufruf
:replace
:: params: :: %1 destination :: %2 source string :: %3 search string :: %4 replace string setlocal set line=%~2 set replace=%~3 set with=%~4 set result=!line:%replace%=%with%! endlocal & set %1="%result%" goto:eof
Code:
call:replace line "!line!" "#" "!replace!"
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz