Batch - Text in variable speichern und zB. a in b ändern
Hallo,
ich möchte ein Batch Script programmieren, dass den Quellcode einer Datei auslesen kann und ihn in eine variable speichern.
Soweit bin ich schon alleine gekommen. (mit for /F "Tokens=*" %%i in (C:\test.txt) do set quell=%%i)
Jetzt soll der Script aber ein Buchstaben in mehrere anderen ersetzen.
Beispiel:
a = |§4µ|
Und zum Schluss soll der Script den umgeänderten Text in eine Datei speichern.
Vielen dank im voraus!
appName
ich möchte ein Batch Script programmieren, dass den Quellcode einer Datei auslesen kann und ihn in eine variable speichern.
Soweit bin ich schon alleine gekommen. (mit for /F "Tokens=*" %%i in (C:\test.txt) do set quell=%%i)
Jetzt soll der Script aber ein Buchstaben in mehrere anderen ersetzen.
Beispiel:
a = |§4µ|
Und zum Schluss soll der Script den umgeänderten Text in eine Datei speichern.
Vielen dank im voraus!
appName
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 95783
Url: https://administrator.de/forum/batch-text-in-variable-speichern-und-zb-a-in-b-aendern-95783.html
Ausgedruckt am: 27.04.2025 um 19:04 Uhr
6 Kommentare
Neuester Kommentar
Hallo appName und willkommen im Forum!
Soferne Du nicht auf puren Batch bestehst, sollte die zB hier gezeigte Vorgangsweise auf Dein Problem anwendbar sein ...
Noch als Hinweis: Um den geänderten Text in einer neuen Datei zu erhalten (und nicht das Original zu verändern), müsste die Originaldatei vorher kopiert und dann das VBScript mit der Kopie als Parameter aufgerufen werden.
Falls Du es aber doch mit nativem Batch versuchen willst (Sonderzeichen wie "|" oder "<" machen das meist etwas mühsam), dann (ungetestet) etwa so:
Grüße
bastla
Soferne Du nicht auf puren Batch bestehst, sollte die zB hier gezeigte Vorgangsweise auf Dein Problem anwendbar sein ...
Noch als Hinweis: Um den geänderten Text in einer neuen Datei zu erhalten (und nicht das Original zu verändern), müsste die Originaldatei vorher kopiert und dann das VBScript mit der Kopie als Parameter aufgerufen werden.
Falls Du es aber doch mit nativem Batch versuchen willst (Sonderzeichen wie "|" oder "<" machen das meist etwas mühsam), dann (ungetestet) etwa so:
@echo off & setlocal
set "Neu=C:\neu.txt"
if exist "%neu%" del "%neu%"
for /F "Tokens=*" %%i in (C:\test.txt) do set quell=%%i & call :ProcessLine
goto :eof
:ProcessLine
>>"%neu%" echo %quell:a=|§4µ|%
goto :eof
bastla
Hallo appName!
Um Dir die Mühe abzunehmen, Dir die andere Möglichkeit anzusehen und auch noch anpassen zu müssen:
Und ja, Du kannst die letzte Zeile auch so schreiben:
Und nochmals ja, Du kannst sie mehrmals hintereinander mit unterschiedlichen "Von"- und "Nach"-Werten verwenden und damit mehrere Ersetzungen vornehmen lassen.
Grüße
bastla
Also wenn ich dein script benutze kommt folgende Fehlermeldung:
Der Befehl "°4À" ist entweder falsch geschrieben oder konnte nicht gefunden werden.
Hatte ich erwähnt, dass Batch sich nicht sooo gut für den Umgang mit Sonderzeichen eignet, und daher als bevorzugte Variante auf einen anderen Beitrag verwiesen?Der Befehl "°4À" ist entweder falsch geschrieben oder konnte nicht gefunden werden.
Um Dir die Mühe abzunehmen, Dir die andere Möglichkeit anzusehen und auch noch anpassen zu müssen:
@echo off & setlocal
set "Alt=C:\Text.txt"
set "Neu=C:\key.txt"
set "Von=a"
set "Nach=|§4µ|"
set R=%temp%ReplaceInFile.vbs
>%R% echo Set fso=CreateObject("Scripting.FileSystemObject"):Set a=WScript.Arguments:T=fso.OpenTextFile(a(0)).ReadAll:fso.CreateTextFile(a(0)).Write Replace(T,a(1),a(2))
copy "%Alt%" "%Neu%">nul
cscript //nologo %R% "%Neu%" "%Von%" "%Nach%"
cscript //nologo %R% "%neu%" "a" "|§4µ|"
Grüße
bastla