Zeichenkette durch Batch ersetzen
Hallo! ich habe mich schon des öfteren bei Euch gemeldet und diesmal habe ich wieder eine Frage, dabei geht es ums ERsetzen von TExtabschnitten/Zeichenketten
Hallo @ all!
Also meine Frage diesmal ist, wie kann ich mit hilfe einer Batch eine bestimmte Zeichenkette in einer *.txt Datei ersetzen??
ich habe mich ein bisschen durch dieses Forum durchgelesen (gelesene Threats: 2.), aber nie wirklich das richtige erhalten!
Also meine Ausgangsdatei ist zum Beispiel 1.txt:
So und jetzt würde ich gerne die Zeichenkette "%20" in einen normalen Abstand umwandeln: " ".
ich habe es schon so probiert (angenommen die Variable x1 hat bereits den Wert: D:\My%20Downloads\Merle%20Haggard%20-%20Mama%20Tried.mp3) :
bzw.
kennt jemand von euch klugen Köpfen einen richtigen Lösungsweg??
ich wäre Euch zu tiefst dankbar!!!
MFG Alexander
Hallo @ all!
Also meine Frage diesmal ist, wie kann ich mit hilfe einer Batch eine bestimmte Zeichenkette in einer *.txt Datei ersetzen??
ich habe mich ein bisschen durch dieses Forum durchgelesen (gelesene Threats: 2.), aber nie wirklich das richtige erhalten!
Also meine Ausgangsdatei ist zum Beispiel 1.txt:
Interpret: Merle Haggard, Title: Mama Tried, Ort: D:\My%20Downloads\Merle%20Haggard%20-%20Mama%20Tried.mp3
So und jetzt würde ich gerne die Zeichenkette "%20" in einen normalen Abstand umwandeln: " ".
ich habe es schon so probiert (angenommen die Variable x1 hat bereits den Wert: D:\My%20Downloads\Merle%20Haggard%20-%20Mama%20Tried.mp3) :
echo %x1:%20= %
echo %x1:^%20= %
kennt jemand von euch klugen Köpfen einen richtigen Lösungsweg??
ich wäre Euch zu tiefst dankbar!!!
MFG Alexander
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 148749
Url: https://administrator.de/forum/zeichenkette-durch-batch-ersetzen-148749.html
Ausgedruckt am: 12.05.2025 um 20:05 Uhr
8 Kommentare
Neuester Kommentar

Moin Alexander,
versuchs mal so:
Gruß
LotPings
versuchs mal so:
@Echo On
Setlocal EnableDelayedExpansion
Set "X1=Interpret: Merle Haggard, Title: Mama Tried, Ort: D:\My%%20Downloads\Merle%%20Haggard%%20-%%20Mama%%20Tried.mp3"
Set X1
Set "X2=!X1:%%20= !"
set X2
Gruß
LotPings
Hallo Daffman,
warum funktioniert die Lösung von pieh-ejdsch bei Dir nicht? Hast Du Dir die Ausgabe auf der Console angesehen?
Du musst das Ergebnis allerdings noch in eine Datei ausgeben, satt auf die Console.
Die Antwort auf Deine P.S. Frage findest Du unter:
und
Im Beispiel von pieh-ejdsch würde in Zeile 5 ein "echo %line%" ein "%line%" ausgeben, da die Variable line innerhalb der for-Schleife, in welcher sie gesetzt wurde, über % nicht mit dem neuen Inhalt verwendbar ist. Mit ! hingegen schon, wenn die verzögerte Erweiterung von Umgebungsvariablen eingeschaltet wurde.
Gruß icsat
warum funktioniert die Lösung von pieh-ejdsch bei Dir nicht? Hast Du Dir die Ausgabe auf der Console angesehen?
Du musst das Ergebnis allerdings noch in eine Datei ausgeben, satt auf die Console.
Die Antwort auf Deine P.S. Frage findest Du unter:
setlocal /?
set /?
Im Beispiel von pieh-ejdsch würde in Zeile 5 ein "echo %line%" ein "%line%" ausgeben, da die Variable line innerhalb der for-Schleife, in welcher sie gesetzt wurde, über % nicht mit dem neuen Inhalt verwendbar ist. Mit ! hingegen schon, wenn die verzögerte Erweiterung von Umgebungsvariablen eingeschaltet wurde.
Gruß icsat
Ungetestet auf Basis von pieh-ejdsch!
Sollte Dir !VAR! und %VAR% näher bringen und Dein Ergebnis in eine neue Datei schreiben:
Überarbeitet wegen Hinweisen von Phil.
Sollte Dir !VAR! und %VAR% näher bringen und Dein Ergebnis in eine neue Datei schreiben:
@echo off
setlocal enabledelayedexpansion
set "eingabe=E:\AdminHelp\1.txt"
set "ausgabe=E:\AdminHelp\1_neu.txt"
set "line=Initialwert fuer Line"
if exist %AUSGABE% del %AUSGABE%
echo Vor der FOR-Schleife hat LINE unter Verwendung von %% den Wert: %LINE%
for /f "usebackq delims=" %%i in (%EINGABE%) do (set "line=%%i"
echo In der FOR-Schleife hat LINE unter Verwendung von %% den Wert: %LINE%
echo In der FOR-Schleife hat LINE unter Verwendung des Ausrufezeichens den Wert: !LINE!
echo !line:%%20= ! >> %AUSGABE%
)
echo Nach der FOR-Schleife hat LINE unter Verwendung von %% den Wert: %LINE%
echo Dein Ergebnis steht in %AUSGABE%
pause
endlocal
Überarbeitet wegen Hinweisen von Phil.
- %datei% im FOR=> %EINGABE%
- % in Echos => %%
- ! in Echo => Ausrufezeichen
moin Daffman,
im Batch ist es zur Darstellung/ zum Abruf von einem Prozentzeichen erforderlich ein doppeltes Prozentzeichen hinzuschreiben.
das hat den Hintergrund der Ordentlichen Auflösung von BatchParametern welche ja in der CMD-Line so nicht vorhanden sind.
auch unter dem Punkt einfache % doppelte %%
zum Testen im CMD-Fenster:
damit diese Zeile Im Batch funktioniert muss sie so lauten
wenn Du die MP3 Dateien ohne Umweg umbenennen möchtes wäre der entsprechende Batch:
@iscat Deine Variable Datei ist nit gesetzt und das AusrufeZeichen wird nicht angezeigt
Gruß Phil
im Batch ist es zur Darstellung/ zum Abruf von einem Prozentzeichen erforderlich ein doppeltes Prozentzeichen hinzuschreiben.
das hat den Hintergrund der Ordentlichen Auflösung von BatchParametern welche ja in der CMD-Line so nicht vorhanden sind.
auch unter dem Punkt einfache % doppelte %%
zum Testen im CMD-Fenster:
dir /b /s "*%20.*" "*%20*.*"
damit diese Zeile Im Batch funktioniert muss sie so lauten
dir /b /s "*%%20.*" "*%%20*.*"
wenn Du die MP3 Dateien ohne Umweg umbenennen möchtes wäre der entsprechende Batch:
@echo off&setlocal
set Ornder="E:\Der wo die Musik drin is"
pushD %Ornder%
for /f "delims=" %%i in ('dir /b /s "*%%20.*" "*%%20*.*"') do (set "line=%%i"
setlocal enabledelayedexpansion
:: Zum Scharfmachen das echo entfernen
echo ren "!ine!" "!line:%%20= !"
endlocal
)
popD
@iscat Deine Variable Datei ist nit gesetzt und das AusrufeZeichen wird nicht angezeigt
Gruß Phil