Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [Batch] Text ersetzen (https://www.delphipraxis.net/157501-%5Bbatch%5D-text-ersetzen.html)

Björn Ole 13. Jan 2011 22:43

[Batch] Text ersetzen
 
Hallo,

ich versuche gerade, mittels Batch-Skript ein Template zu füllen. So sieht das Beispiel-Template aus:

Zitat:

Zitat von Template
Zeile #1
Zeile #2
Zeile #3


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:

Zitat von Ausgabe
Zeile #1:#=Nr
Zeile #2:#=Nr
Zeile #3:#=Nr


Gibts hier nen Guru, der mir weiterhelfen kann?
Ich glaub, ich hab das mit den ! noch nicht ganz verstanden. :(


Gruß,
Björn

marabu 14. Jan 2011 09:56

AW: [Batch] Text ersetzen
 
Hallo Björn,

das Ersetzungsproblem für sich genommen kannst Du vielleicht so lösen:

Code:
@echo off
setlocal EnableDelayedExpansion
for /f "delims= tokens=*" %%a in (template.txt) do (
  set line=%%a
  echo !line:#=Nr!
)
Grüße vom marabu

Björn Ole 17. Jan 2011 19:12

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:
: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
Aufruf
Code:
call:replace line "!line!" "#" "!replace!"


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz