Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Zeichen in verschiedenen txt bzw. lrc dateien ersetzen

Mitglied: Avatarius

Avatarius (Level 1) - Jetzt verbinden

05.03.2008, aktualisiert 06.03.2008, 3622 Aufrufe, 7 Kommentare

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
Mitglied: miniversum
05.03.2008 um 13:15 Uhr
Ich schreib mal was ungetestetes für eine Datei.
Wenn das bei dir so funktioniert kann man das dan auf mehrere Dateien umbauen.
01.
@echo off & setlocal enabledelayedexpansion
02.
set "Filename=C:\Dateiname.txt"
03.
if exist "%filename%.tmp" del "%filename%.tmp"
04.
FOR /F "tokens=1* delims=]" %%a in ('type "%Filename%"') do  (
05.
set p1=%%a]
06.
set p2=%%b
07.
if "!p1:~0,4!" equ "[ti:" echo !p1!!p2!>>"%filename%.tmp"
08.
if "!p1:~0,4!" equ "[ar:" echo !p1!!p2!>>"%filename%.tmp"
09.
if "!p1:~0,4!" equ "[al:" echo !p1!!p2!>>"%filename%.tmp"
10.
if "!p1:~0,4!" equ "[by:" echo !p1!!p2!>>"%filename%.tmp"
11.
echo !p1:.=:!!p2!>>"%filename%.tmp"
12.
)
13.
move /y "%filename%.tmp" "%filename%"
miniversum
Bitte warten ..
Mitglied: Avatarius
05.03.2008 um 15:43 Uhr
Hallo miniversum,

Vielen Dank für die schnelle Antwort, dein code hat mein Problem schon fast gelöst.
Einziges Problem:
die Zeilen bei denen die if-Überprüfung wahr ergibt stehen doppelt in der Datei.

Ansonsten hat alles funktioniert.

Als Lösung habe ich dein code wie folgt modifiziert.
Weiß zwar nicht genau warum aber es klappt.

01.
@echo off & setlocal enabledelayedexpansion
02.
set "Filename=C:\""test 2".lrc""
03.
if exist "%filename%.tmp" del "%filename%.tmp"
04.
FOR /F "tokens=1* delims=]" %%a in ('type "%Filename%"') do  (
05.
set p1=%%a]
06.
set p2=%%b
07.
if "!p1:~0,4!" equ "[enc" echo off
08.
if "!p1:~0,4!" equ "[ti:" echo off
09.
if "!p1:~0,4!" equ "[ar:" echo off
10.
if "!p1:~0,4!" equ "[al:" echo off
11.
if "!p1:~0,4!" equ "[by:" echo off
12.
if "!p1:~0,4!" equ "[off" echo off
13.
echo !p1:.=:!!p2!>>"%filename%.tmp"
14.
)
15.
move /y "%filename%.tmp" "%filename%"
Die beiden zusätzlichen Einträge fangen weitere mögliche Einträge ab.

Die Rückgabe sieht nun so aus:

[ti:titel]
[ar:artist]
[al:album]
[by:bla]
[00:20:05]Text1.
[00:22:59]Text2.
...
[nn:nn:nn]Textn.

ist genau das was ich wollte.


bleibt noch folgendes *g*:

Wie erreicht man, das Leerzeilen erhalten bleiben?
Hab folgendes probiert:
01.
if "!p1!" equ "" echo. >>"%filename%.tmp"
02.
if "!p1!" == "" echo. >>"%filename%.tmp"
03.
if "!p1!" == [] echo. >>"%filename%.tmp"
klappt aber nicht.

Wie kann man erreichen, das er das für alle dateien in dem Ordner macht?


danke schön
norbert
Bitte warten ..
Mitglied: miniversum
05.03.2008 um 19:19 Uhr
oh ja sehe ich auch grade. Leerzeilen und das doppelte sollte so besser gehen:
01.
@echo off & setlocal enabledelayedexpansion
02.
set "Filename=C:\Dateiname.txt"
03.
if exist "%filename%.tmp" del "%filename%.tmp"
04.
FOR /F "tokens=1,2* delims=:]" %%a in ('findstr .* "%Filename%"') do  (
05.
set p1=%%b]
06.
set p2=%%c
07.
if "!p1:~0,4!" equ "[ti:" (echo.!p1!!p2!>>"%filename%.tmp" & goto:washeader)
08.
if "!p1:~0,4!" equ "[ar:" (echo.!p1!!p2!>>"%filename%.tmp" & goto:washeader)
09.
if "!p1:~0,4!" equ "[al:" (echo.!p1!!p2!>>"%filename%.tmp" & goto:washeader)
10.
if "!p1:~0,4!" equ "[by:" (echo.!p1!!p2!>>"%filename%.tmp" & goto:washeader)
11.
echo.!p1:.=:!!p2!>>"%filename%.tmp"
12.
:washeader
13.
)
14.
move /y "%filename%.tmp" "%filename%"
miniversum
Bitte warten ..
Mitglied: Avatarius
05.03.2008 um 21:19 Uhr
Hallo miniversum

Also die doppelten Eointräge am Anfang sind weg.

Habe " :washeader " aus der FOR-Schleife rausgeholt und nach die Klammer gestellt, da es sonst gar nichts gemacht hat.
Kriege allerdings folgende rückgabe:
p1:.=:
p1:.=:
p1:.=:
p1:.=:
p1:.=:Text1
p1:.=:Text2

Die leerzeilen klappen auch noch nicht.
Ersetze ich nun den punkt bei echo

echo.!p1:.=:!!p2!>>"%filename%.tmp

mit einem leerzweichen, fehlen in der rückgabe die ersten 4 zeichen jeder zeile.
Komme leider nicht dahinter an was es liegen könnte.

norbert
Bitte warten ..
Mitglied: miniversum
06.03.2008 um 10:09 Uhr
So das hier mößte gehen. Bei meinem Tet ging es jedenfalls:
01.
@echo off & setlocal enabledelayedexpansion
02.
set "Filename=Dateiname.txt"
03.
if exist "%filename%.tmp" del "%filename%.tmp"
04.
FOR /F "tokens=1,2,3* delims=:]" %%a in ('findstr /N .* "%Filename%"') do  (
05.
echo [%%a][%%b][%%c][%%d]
06.
set p1=%%b:%%c]
07.
set p2=%%d
08.
set "line= !p1:.=:!!p2!"
09.
if "!p1:~0,4!" equ "[enc" set "line= !p1!!p2!"
10.
if "!p1:~0,4!" equ "[ti:" set "line= !p1!!p2!"
11.
if "!p1:~0,4!" equ "[ar:" set "line= !p1!!p2!"
12.
if "!p1:~0,4!" equ "[al:" set "line= !p1!!p2!"
13.
if "!p1:~0,4!" equ "[by:" set "line= !p1!!p2!"
14.
if "!p1:~0,4!" equ "[off" set "line= !p1!!p2!"
15.
if "!line!" equ " :]" set "line=."
16.
echo!line!>>"%filename%.tmp"
17.
)
18.
move /y "%filename%.tmp" "%filename%"
miniversum
Bitte warten ..
Mitglied: Avatarius
06.03.2008 um 13:58 Uhr
Hallo miniversum,

vielen Dank klappt wunderbar,
Kann man eine doppelte For Schleife realisieren?
Habe eine 2te Datei geschrieben, die die dateinamen an die erste zum ersetzen übergibt, damit klappt es, frage mich allerdings ob das eleganter geht.

1 Datei:
01.
@echo off & setlocal enabledelayedexpansion
02.
FOR %%d in (*.txt *.lrc) do (
03.
set "Filename=C:\test\%%d"
04.
CALL 2Ersetzen.BAT Filename
05.
)
2 Datei
Dein obiger code ohne
01.
set "Filename=Dateiname.txt"
Bin echt begeistert , das das so schnell gelöst werden konnte. vielen Dank nochmal.
norbert
Bitte warten ..
Mitglied: miniversum
06.03.2008 um 15:13 Uhr
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.
01.
@echo off & setlocal enabledelayedexpansion
02.
FOR %%e in (*.txt *.lrc) do (
03.
if exist "%%e.tmp" del "%%e.tmp"
04.
FOR /F "tokens=1,2,3* delims=:]" %%a in ('findstr /N .* "%%e"') do  (
05.
echo [%%a][%%b][%%c][%%d]
06.
set p1=%%b:%%c]
07.
set p2=%%d
08.
set "line= !p1:.=:!!p2!"
09.
if "!p1:~0,4!" equ "[enc" set "line= !p1!!p2!"
10.
if "!p1:~0,4!" equ "[ti:" set "line= !p1!!p2!"
11.
if "!p1:~0,4!" equ "[ar:" set "line= !p1!!p2!"
12.
if "!p1:~0,4!" equ "[al:" set "line= !p1!!p2!"
13.
if "!p1:~0,4!" equ "[by:" set "line= !p1!!p2!"
14.
if "!p1:~0,4!" equ "[off" set "line= !p1!!p2!"
15.
if "!line!" equ " :]" set "line=."
16.
echo!line!>>"%%e.tmp"
17.
)
18.
move /y "%%e.tmp" "%%e"
19.
)
Ichabe einfach überalle %filename% durch das %%e ersetzt und die erste FOR Schleife um alle gemacht.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Merkwürdige Zeilenformatierung in txt Datei

gelöst Frage von miczarBatch & Shell3 Kommentare

Hallo zusammen, ich arbeite mit .cxv Dateien. Das ist nichts anderes wie .txt Dateien nur mit Programmspezifischer Endung. Pro ...

Windows 7

Txt Datei mit findstr durchsuchen

gelöst Frage von 126594Windows 72 Kommentare

Hallo zusammen! Leider komme ich gerade an meine Grenzen und weiß nicht mehr weiter, jetzt hoffe ich hier, den ...

Batch & Shell

Wert in einer TXT Datei suchen

Frage von nolle99Batch & Shell11 Kommentare

Hallo Leute Ich habe ein Problem Ich habe mir von meiner Seite alle URLs in einer TXT gespeichert (30.000 ...

Batch & Shell

Txt datei veränden - "steuerung" für VirtualBox

gelöst Frage von AngryDadBatch & Shell7 Kommentare

Hallo zusammen! Möchte eine .bat schreiben mit der ich meine VM´s steuern kann. Hab es schon geschafft die Liste ...

Neue Wissensbeiträge
Windows Mobile

Support für Windows Mobile endet im Dezember 2019

Information von transocean vor 4 StundenWindows Mobile

Moin, MS empfiehlt als Alternative den Umstieg auf IOS oder Android, wie man hier lesen kann. Gruß Uwe

Internet

Kommentar: Bundesregierung erwägt Ausschluss von Huawei im 5G-Netz - Unsere Presse wird immer sensationsgieriger

Information von Frank vor 2 TagenInternet5 Kommentare

Hier mal wieder ein schönes Beispiel für fehlgeleiteten Journalismus und Politik zugleich. Da werden aus Gerüchten plötzlich Fakten, da ...

Windows 10

Netzwerk-Bug in allen Windows 10-Versionen durch Januar 2019-Updates

Information von kgborn vor 2 TagenWindows 101 Kommentar

Nur ein kurzer Hinweis für Admins, die Windows 10-Clients im Portfolio haben. Mit den Updates vom 8. Januar 2019 ...

Windows 10

Windows 10 V1809: Rollout ist gestartet - kommt per Windows Update

Information von kgborn vor 3 TagenWindows 102 Kommentare

Eine kurze Information für die Admins, die Windows 10 im Programm haben. Microsoft hat die letzte Baustelle (die Inkompatibilität ...

Heiß diskutierte Inhalte
TK-Netze & Geräte
TAPI auf einem Win2016Server installieren und einrichten
Frage von wstabelTK-Netze & Geräte32 Kommentare

Hallo liebe Admins, ich habe folgende Situation: 1 Windows Server 2016 Standard als DC 1 SNOM 710 IP-Telefon 1 ...

Windows 10
Robocopy Quelle und Ziel vertauscht Daten gelöscht ?
Frage von eastclintwoodWindows 1021 Kommentare

Hallo, ich wollte Daten von einer extrernen Festplatte (USB) auf eine interne Platte per robocopy sichern. Leider habe ich ...

Off Topic
Darf ich ein Forum erstellen das Produkte eines Herstellers betrifft?
Frage von cyberwallOff Topic8 Kommentare

Hallo Community, ich habe da eine "rechtliche" bzw. allgemeine Frage zum erstellen von Foren. Darf ich als "normale Person" ...

Switche und Hubs
HP PS1810-8G Switch stürzt bei iperf3 ab
Frage von BierkistenschlepperSwitche und Hubs6 Kommentare

Hallo, ich habe folgendes Setup: VDSL -> FritzBox (DHCP) -> HP PS1810-8G Switch => Bonding mit 2 Leitungen => ...