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

Frage Entwicklung Batch & Shell

Mitglied: Avatarius

Avatarius (Level 1) - Jetzt verbinden

05.03.2008, aktualisiert 06.03.2008, 3588 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
In txt file an bestimmter Position zeichen ersetzen, Ideen ?
gelöst Frage von buliwyfBatch & Shell7 Kommentare

EIn freundl. Hallo all ;-) mein Anliegen was mich jetzt 2 Tage beschaeftigt ist : wie kann ich in ...

Batch & Shell
Zeichen , durch LF CR ( also neu Zeile) in Datei ersetzen.
gelöst Frage von mycroftoneBatch & Shell2 Kommentare

Hallo Zusammen Möchte per Batch in einer Datei das Zeichen , durch ein LFCR ersetzen lassen. Manuel mit WORD ...

Microsoft Office
Excel - suchen und ersetzen für mehrere Formeln in verschiedenen Dateien
Frage von kilrathiMicrosoft Office

Hallo zusammen, ich weiß es gibt schon einige Fragen zu "suchen und ersetzen" in Excel, aber irgendwie passt Keine ...

Batch & Shell
Wie ersetze ich in einer .txt ein Lehrzeichen mit einen Zeilenumbruch?
gelöst Frage von AlexIOTBatch & Shell4 Kommentare

Hallo Zusammen, ich hoffe Ihr könnt mir helfen: folgende Ausgangssituation: Inhalt der .txt-Datei: Vorname Nachname, Abteilungskürzel <Mailadresse>; Vorname Nachname, ...

Neue Wissensbeiträge
Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 15 StundenApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 20 StundenWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 20 StundenWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 1 TagInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Heiß diskutierte Inhalte
Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server18 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Windows XP
Windows XP Aktivieren geht nicht
Frage von tetikmiroWindows XP13 Kommentare

Hallo Ich habe einen Windows XP mit einen vCenter Converter umgezogen auf eine ESXI. Soweit funktioniert dies auch ohne ...

Blogs
Immer wiederkehrende PHP Fehlermeldung bei Wordpress UTF-8 - ASCII
gelöst Frage von vcdweltBlogs11 Kommentare

Hi, seit einiger Zeit wird mein error_log meines Wordpress Blogs mit immer der gleichen Fehlermeldung überschwemmt. 14-Dec-2017 08:18:05 UTC ...

Switche und Hubs
Redundante L2 LWL Leitung über 2 Standorte - Spanning Tree - HP Equipment
gelöst Frage von ResolvSwitche und Hubs10 Kommentare

Hallo, ich stehe vor der Herausforderung eine Redundante L2 LWL Leitung über 2 Standorte herzustellen. Grundsätzliches Switching Know How ...