appname
Goto Top

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

Content-Key: 95783

Url: https://administrator.de/contentid/95783

Printed on: April 20, 2024 at 02:04 o'clock

Member: bastla
bastla Sep 01, 2008, updated at Oct 18, 2012 at 16:36:10 (UTC)
Goto Top
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:
@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
Grüße
bastla
Member: appName
appName Sep 01, 2008 at 14:09:16 (UTC)
Goto Top
Vielen dank!
Allerdings habe ich meine frage wohl nicht richtig formuliert!
Ich möchte aber wenn im Quellcode zum Beispiel ein a befindet soll daraus "|§4µ|" werden oder wenn sich im Quellcode ein A befindet soll daraus dann ein "|5(ä|" werden. Zum schluss soll das dann alles in eine andere Datei geschpeichert werden!
Vielen dank im voraus!
appName
Member: bastla
bastla Sep 01, 2008 at 14:23:54 (UTC)
Goto Top
Hallo appName!

Welche der beiden Varianten hast Du getestet, und inwieweit weicht das erzielte Ergebnis von Deinen Vorstellungen ab?

... und was meinst Du mit
Zum schluss soll das dann alles in eine andere Datei geschpeichert werden!

Grüße
bastla
Member: appName
appName Sep 01, 2008 at 15:30:31 (UTC)
Goto Top
Also wenn ich dein script benutze kommt folgende Fehlermeldung:
Der Befehl "°4À" ist entweder falsch geschrieben oder konnte nicht gefunden werden.
Und ich erkläre es nochmal:
Also ich habe eine textdatei zum Beispiel unter C:\text.txt. In dieser Textdatei steht zB.: abzdefghijklmnopqrstuvwxyz. Daraus wird dann |§4µ|bcdefghijklmnopqrstuvwxyz. Das wird dann unter C:\key.txt gespeichert!

In der neu.txt wird folgendes gespeichert:
ECHO ist eingeschaltet (ON).

MfG
appName
Member: bastla
bastla Sep 01, 2008 at 16:01:19 (UTC)
Goto Top
Hallo appName!

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?

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%"  
Und ja, Du kannst die letzte Zeile auch so schreiben:
cscript //nologo %R% "%neu%" "a" "|§4µ|" 
Und nochmals ja, Du kannst sie mehrmals hintereinander mit unterschiedlichen "Von"- und "Nach"-Werten verwenden und damit mehrere Ersetzungen vornehmen lassen.

Grüße
bastla
Member: appName
appName Sep 01, 2008 at 16:32:23 (UTC)
Goto Top
Vielen dank!!!!!!!!
So gehts!
MfG
appName