AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[Batch] Text ersetzen

Ein Thema von Björn Ole · begonnen am 13. Jan 2011 · letzter Beitrag vom 17. Jan 2011
Antwort Antwort
Benutzerbild von Björn Ole
Björn Ole

Registriert seit: 11. Jul 2008
166 Beiträge
 
Delphi XE Professional
 
#1

[Batch] Text ersetzen

  Alt 13. Jan 2011, 23:43
Hallo,

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

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 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
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

AW: [Batch] Text ersetzen

  Alt 14. Jan 2011, 10:56
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
  Mit Zitat antworten Zitat
Benutzerbild von Björn Ole
Björn Ole

Registriert seit: 11. Jul 2008
166 Beiträge
 
Delphi XE Professional
 
#3

AW: [Batch] Text ersetzen

  Alt 17. Jan 2011, 20:12
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!"
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:41 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