Zeichen in verschiedenen txt bzw. lrc dateien ersetzen
Hallo,
ich habe folgendes Problem.
Ausgangssituation:
- Lyricdateien : "verschiedene Dateiennamen".txt und .lrc
- Befinden sich im selben Ordner
- Dateiinhalt z.B:
[ti:titel]
[ar:artist]
[al:album]
[by:bla]
[00:20.05]Text1.
[00:22.59]Text2.
...
[nn:nn.nn]Textn.
der inhalt [xx:xx.xx] kann schon ab der 3./5.ten beginnen, ist also nicht fest ab zeile 4
Nun will ich die jeweils [xx:xx.xx] in [xx:xx:xx] ändern. Also nur den Punkt in den eckigen Klammern, nicht den am Ende der Zeile.
Kann man mittels einer batch datei diese ersetzungen vornehmen und anschließend die quelldatei mit ersetzungen speichern?
Habe mir verschiedene Posts zum manipulieren von dateiinhalten durchgelesen, konnte aber leider keinen auf mein Problem anwenden.
Vielen Dank.
Norbert
ich habe folgendes Problem.
Ausgangssituation:
- Lyricdateien : "verschiedene Dateiennamen".txt und .lrc
- Befinden sich im selben Ordner
- Dateiinhalt z.B:
[ti:titel]
[ar:artist]
[al:album]
[by:bla]
[00:20.05]Text1.
[00:22.59]Text2.
...
[nn:nn.nn]Textn.
der inhalt [xx:xx.xx] kann schon ab der 3./5.ten beginnen, ist also nicht fest ab zeile 4
Nun will ich die jeweils [xx:xx.xx] in [xx:xx:xx] ändern. Also nur den Punkt in den eckigen Klammern, nicht den am Ende der Zeile.
Kann man mittels einer batch datei diese ersetzungen vornehmen und anschließend die quelldatei mit ersetzungen speichern?
Habe mir verschiedene Posts zum manipulieren von dateiinhalten durchgelesen, konnte aber leider keinen auf mein Problem anwenden.
Vielen Dank.
Norbert
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 82370
Url: https://administrator.de/forum/zeichen-in-verschiedenen-txt-bzw-lrc-dateien-ersetzen-82370.html
Ausgedruckt am: 23.04.2025 um 02:04 Uhr
7 Kommentare
Neuester Kommentar
Ich schreib mal was ungetestetes für eine Datei.
Wenn das bei dir so funktioniert kann man das dan auf mehrere Dateien umbauen.
miniversum
Wenn das bei dir so funktioniert kann man das dan auf mehrere Dateien umbauen.
@echo off & setlocal enabledelayedexpansion
set "Filename=C:\Dateiname.txt"
if exist "%filename%.tmp" del "%filename%.tmp"
FOR /F "tokens=1* delims=]" %%a in ('type "%Filename%"') do (
set p1=%%a]
set p2=%%b
if "!p1:~0,4!" equ "[ti:" echo !p1!!p2!>>"%filename%.tmp"
if "!p1:~0,4!" equ "[ar:" echo !p1!!p2!>>"%filename%.tmp"
if "!p1:~0,4!" equ "[al:" echo !p1!!p2!>>"%filename%.tmp"
if "!p1:~0,4!" equ "[by:" echo !p1!!p2!>>"%filename%.tmp"
echo !p1:.=:!!p2!>>"%filename%.tmp"
)
move /y "%filename%.tmp" "%filename%"
miniversum
oh ja sehe ich auch grade. Leerzeilen und das doppelte sollte so besser gehen:
miniversum
@echo off & setlocal enabledelayedexpansion
set "Filename=C:\Dateiname.txt"
if exist "%filename%.tmp" del "%filename%.tmp"
FOR /F "tokens=1,2* delims=:]" %%a in ('findstr .* "%Filename%"') do (
set p1=%%b]
set p2=%%c
if "!p1:~0,4!" equ "[ti:" (echo.!p1!!p2!>>"%filename%.tmp" & goto:washeader)
if "!p1:~0,4!" equ "[ar:" (echo.!p1!!p2!>>"%filename%.tmp" & goto:washeader)
if "!p1:~0,4!" equ "[al:" (echo.!p1!!p2!>>"%filename%.tmp" & goto:washeader)
if "!p1:~0,4!" equ "[by:" (echo.!p1!!p2!>>"%filename%.tmp" & goto:washeader)
echo.!p1:.=:!!p2!>>"%filename%.tmp"
:washeader
)
move /y "%filename%.tmp" "%filename%"
miniversum
So das hier mößte gehen. Bei meinem Tet ging es jedenfalls:
miniversum
@echo off & setlocal enabledelayedexpansion
set "Filename=Dateiname.txt"
if exist "%filename%.tmp" del "%filename%.tmp"
FOR /F "tokens=1,2,3* delims=:]" %%a in ('findstr /N .* "%Filename%"') do (
echo [%%a][%%b][%%c][%%d]
set p1=%%b:%%c]
set p2=%%d
set "line= !p1:.=:!!p2!"
if "!p1:~0,4!" equ "[enc" set "line= !p1!!p2!"
if "!p1:~0,4!" equ "[ti:" set "line= !p1!!p2!"
if "!p1:~0,4!" equ "[ar:" set "line= !p1!!p2!"
if "!p1:~0,4!" equ "[al:" set "line= !p1!!p2!"
if "!p1:~0,4!" equ "[by:" set "line= !p1!!p2!"
if "!p1:~0,4!" equ "[off" set "line= !p1!!p2!"
if "!line!" equ " :]" set "line=."
echo!line!>>"%filename%.tmp"
)
move /y "%filename%.tmp" "%filename%"
miniversum
Ja klar.
Ich wollte eben erst testen ob es mit einer Datei richtig geht bevor man alle macht.
Es geht genauso wie du es geamcht hast, allerdings kannst du gleich alles in eine Datei packen.
Ichabe einfach überalle %filename% durch das %%e ersetzt und die erste FOR Schleife um alle gemacht.
Ich wollte eben erst testen ob es mit einer Datei richtig geht bevor man alle macht.
Es geht genauso wie du es geamcht hast, allerdings kannst du gleich alles in eine Datei packen.
@echo off & setlocal enabledelayedexpansion
FOR %%e in (*.txt *.lrc) do (
if exist "%%e.tmp" del "%%e.tmp"
FOR /F "tokens=1,2,3* delims=:]" %%a in ('findstr /N .* "%%e"') do (
echo [%%a][%%b][%%c][%%d]
set p1=%%b:%%c]
set p2=%%d
set "line= !p1:.=:!!p2!"
if "!p1:~0,4!" equ "[enc" set "line= !p1!!p2!"
if "!p1:~0,4!" equ "[ti:" set "line= !p1!!p2!"
if "!p1:~0,4!" equ "[ar:" set "line= !p1!!p2!"
if "!p1:~0,4!" equ "[al:" set "line= !p1!!p2!"
if "!p1:~0,4!" equ "[by:" set "line= !p1!!p2!"
if "!p1:~0,4!" equ "[off" set "line= !p1!!p2!"
if "!line!" equ " :]" set "line=."
echo!line!>>"%%e.tmp"
)
move /y "%%e.tmp" "%%e"
)
Ichabe einfach überalle %filename% durch das %%e ersetzt und die erste FOR Schleife um alle gemacht.