Zeichen suchen und in die nächste Zeile was kopieren

Mitglied: Klaus20

Klaus20 (Level 1) - Jetzt verbinden

04.12.2020, aktualisiert 05.12.2020, 480 Aufrufe, 13 Kommentare, 1 Danke

Hallo Forum, hätte mal wieder eine Frage an die Batch Profis.
Habe mir mehrere Playlisten erstellt und die immer im jeweiligen Verzeichnis abgespeichert.
Nun möchte ich die gerne im Haupt musikverzeichis ablegen und in der Playliste den Pfad ändern.

Bisherige Playliste:
#EXTINF:266,Alicia Keys - Why Do I Feel So Bad - Soul - Slow
Alicia Keys\Slow\Why Do I Feel So Bad - Alicia Keys - Soul .mp3
#EXTINF:165,Aretha Franklin - Natural Woman - Soul - Slow
Aretha Franklin\Slow\Natural Woman - Aretha Franklin - Soul .mp3

Ich möchte nach #EXTINF suchen und am nächsten Zeilenanfang zu den Pfad folgenden Zeichen einfügen --> Musik\

Wunschplayliste:
#EXTINF:266,Alicia Keys - Why Do I Feel So Bad - Soul - Slow
Musik\Alicia Keys\Slow\Why Do I Feel So Bad - Alicia Keys - Soul .mp3
#EXTINF:165,Aretha Franklin - Natural Woman - Soul - Slow
Musik\Aretha Franklin\Slow\Natural Woman - Aretha Franklin - Soul .mp3

Ich weiß nicht ob so was überhaupt geht ??
Eine andere Möglichkeit wäre nach den Interpreten zu suchen.
Habe für jeden Interpreten ein eigenes Verzeichnis.
Z.B.: Im Musikverzeichnis den ersten Interpreten auslesen und in den Playlisten den Namen mit Musik\Name ersetzen.
Habe nur leider keine Idee wie ich sowas realisieren kann.

Wäre schön wenn jemand von Euch dazu was einfällt.

Gruß Klaus
Mitglied: 146707
146707 (Level 1)
04.12.2020, aktualisiert um 11:09 Uhr
Bitte warten ..
Mitglied: Klaus20
04.12.2020 um 11:21 Uhr
@primal - erst mal Danke für die Antwort.
Könntest Du mir bitte Deine Antwort etwas erläutern damit ich das nachvollziehen kann ??
Bitte warten ..
Mitglied: 146707
146707 (Level 1)
04.12.2020, aktualisiert um 11:47 Uhr
Batch ruft PS auf und fügt vor alle Zeilen der Datei die nicht mit einer Raute beginnen deinen gewünschten String an und schreibt das ganze wieder zurück, nichts weltbewegendes.
Regular Expressions Tutorial
Macht dir auch jeder halbwegskomfortable Texteditor wie z.B. Notepad++ im Handumdrehen auch ohne irgendwelche Skripte.
Bitte warten ..
Mitglied: Klaus20
04.12.2020 um 12:11 Uhr
@primal - mache wohl noch einiges falsch ??
Habe zum testen habe zum testen das Verzeichnis Musik mit 2 Unterverzeichnisen (Interpreten) erstellt.
Die beiden Interpreten sind auch in der playlist.txt und in der playlist.m3u.

Inhalt Playlist.txt
38 Special
Aaron Neville

Inhalt playlist.m3u
#EXTM3U
#EXTINF:275,38 Special - Second Chance - Pop - Slow
38 Special\Slow\Second Chance - 38 Special - Pop .mp3
#EXTINF:157,Aaron Neville - Crazy Love-Van Morrison - R&B - Slow
Aaron Neville\Slow\Crazy Love-Van Morrison - Aaron Neville - R&B .mp3

* Bekomme folgende Meldung *
d:\Musik>test

d:\Musik>{\rtf1\ansi\ansicpg1252\deff0\nouicompat{\fonttbl{\f0\fnil\fcharset0 Calibri;}}
Das System kann den angegebenen Pfad nicht finden.

d:\Musik>{\*\generator Riched20 10.0.19041}\viewkind4\uc1
Das System kann den angegebenen Pfad nicht finden.

d:\Musik>\pard\sa200\sl276\slmult1\f0\fs22\lang7 @echo off\par
Das System kann den angegebenen Pfad nicht finden.

d:\Musik>set "datei=d:\\Musik\\playlist.txt"\par

d:\Musik>powershell -EP Bypass -C "(gc 'd:\\Musik\\playlist.txt') -replace '^([^#].*)','Musik\\$1' | sc 'd:\\Musik\\playlist.txt'"\par
sc : Das Eingabeobjekt kann an keine Parameter des Befehls gebunden werden, da der Befehl keine Pipelineeingaben
akzeptiert oder die Eingabe und deren Eigenschaften mit keinem der Parameter übereinstimmen, die Pipelineeingaben
akzeptieren.
In Zeile:1 Zeichen:67

... ) -replace '^([^#].*)','Musik\\$1' | sc 'd:\\Musik\\playlist.txt'\par

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : InvalidArgument: (Musik\\38 Special:String) [Set-Content], ParameterBindingException
+ FullyQualifiedErrorId : InputObjectNotBound,Microsoft.PowerShell.Commands.SetContentCommand

sc : Das Eingabeobjekt kann an keine Parameter des Befehls gebunden werden, da der Befehl keine Pipelineeingaben
akzeptiert oder die Eingabe und deren Eigenschaften mit keinem der Parameter übereinstimmen, die Pipelineeingaben
akzeptieren.
In Zeile:1 Zeichen:67

... ) -replace '^([^#].*)','Musik\\$1' | sc 'd:\\Musik\\playlist.txt'\par

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : InvalidArgument: (Musik\\Aaron Neville:String) [Set-Content], ParameterBindingException
+ FullyQualifiedErrorId : InputObjectNotBound,Microsoft.PowerShell.Commands.SetContentCommand


d:\Musik>}
Der Befehl "}" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
***
Bitte warten ..
Mitglied: 146707
146707 (Level 1)
04.12.2020, aktualisiert um 12:37 Uhr
mache wohl noch einiges falsch ??
Definitiv ...
Du hast das Skript offensichtlich im RTF-Format oder sonst was abgespeichert. Also mach es richtig und speichere das als Plaintext ANSI in Notepad dann funktioniert das einwandfrei (hier getestet!)!
Bitte warten ..
Mitglied: Klaus20
04.12.2020 um 12:51 Uhr
So nun klappt es erstmal (Hatte erst mal die Datei nur abgespeichert ohne auf die Codierung zu achten - wieder was dazugelertn) - Danke !!
Wie bekomme ich es nun hin daß allen Playlisten (*.m3u) die Interpreten mit Pfad (Musik\)und Interpret (Aaron Neville) ersetzt werden ??
Bitte warten ..
Mitglied: 146707
146707 (Level 1)
04.12.2020, aktualisiert um 12:55 Uhr
Einfache ne Foreach Schleife ergänzen, kommt mal wieder alles nur tropfenweise hier ... Freitag halt 🐟
Bitte warten ..
Mitglied: Klaus20
04.12.2020 um 13:21 Uhr
Wieder etwas weiter. Es ist zwar "Musik\ " hinzugefügt worden aber leider einiges mehr.
Hast Du noch eine Idee ??

Orginal Datei:
#EXTM3U
#EXTINF:275,38 Special - Second Chance - Pop - Slow
38 Special\Slow\Second Chance - 38 Special - Pop .mp3
#EXTINF:157,Aaron Neville - Crazy Love-Van Morrison - R&B - Slow
Aaron Neville\Slow\Crazy Love-Van Morrison - Aaron Neville - R&B .mp3

Neue Datei:
Musik\{\rtf1\ansi\deff0\nouicompat{\fonttbl{\f0\fnil\fcharset0 Calibri;}}
Musik\{\*\generator Riched20 10.0.19041}\viewkind4\uc1
Musik\\pard\sa200\sl276\slmult1\f0\fs22\lang7 #EXTM3U\par
#EXTINF:275,38 Special - Second Chance - Pop - Slow\par
Musik\38 Special\\Slow\\Second Chance - 38 Special - Pop .mp3\par
#EXTINF:157,Aaron Neville - Crazy Love-Van Morrison - R&B - Slow\par
Musik\Aaron Neville\\Slow\\Crazy Love-Van Morrison - Aaron Neville - R&B .mp3\par
Musik\}
Musik\
Bitte warten ..
Mitglied: 146707
146707 (Level 1)
LÖSUNG 04.12.2020, aktualisiert um 15:29 Uhr
Kann ich dir sagen warum, deine angeblichen *.M3U Dateien sind keine "echten" Textdateien sondern RTF-Dateien mit Formatierungsanweisungen, d.h. dort bestehen Zeichen zum Großteil aus Escape-Sequenzen Kauderwelsch, einfach mal nachschlagen dann verstehst du warum => https://de.wikipedia.org/wiki/Rich_Text_Format! Da hat wohl wieder ein Noob mit Wordpad rum gespielt ... Wie ich schon sagte Freitaaaag 🐟. Benutze einen vernünftigen Editor oder konvertiere die RTF-Dateien in Plaintext dann geht das auch wie gewünscht.

Ich bin jetzt raus.
Bitte warten ..
Mitglied: Klaus20
04.12.2020 um 18:45 Uhr
@primal
Dank Deiner Hilfe habe ich mittlerweile 200 Playlisten angepasst und einiges gelernt - Nochmals vielen Dank für Deine Hilfe und Geduld.

Gruß Klaus
Bitte warten ..
Mitglied: 146707
146707 (Level 1)
LÖSUNG 07.12.2020 um 11:37 Uhr
Schön. Dann bitte auch den Beitrag als gelöst markieren. Thanks.
Bitte warten ..
Mitglied: Klaus20
07.12.2020 um 12:45 Uhr
Mach ich gerne - nur wie ?
Bitte warten ..
Mitglied: 146707
146707 (Level 1)
LÖSUNG 07.12.2020 um 13:00 Uhr
Zitat von Klaus20:

Mach ich gerne - nur wie ?
Hast du gerade getan (siehst du an den grünen "gelöst" Schildchen).
Bitte warten ..
Heiß diskutierte Inhalte
Wünsch Dir was
Das ist ja nicht auszuhalten, dass ich für jeden googlen soll
NordicMikeVor 1 TagAllgemeinWünsch Dir was24 Kommentare

Ich beantrage, dass bei jeder Beitragserstellung eine Checkbox angeklickt werden muss, mit dem Text: Ja, ich habe bereits danach gegoogelt. Ansonsten soll der "Senden" ...

Windows 10
Wie kann ich mehrere PCs gleich aufsetzten (mit User)
dressaVor 1 TagFrageWindows 1010 Kommentare

Hallo miteinander. Wie kann ich mehrere PCs (über 200) gleich aufsetzten. Ich habe etwa 4 Modele die sich nur von der Baugeneration unterscheiden. Also ...

Festplatten, SSD, Raid
SATA Treiber für HP
gelöst ben1300Vor 23 StundenFrageFestplatten, SSD, Raid21 Kommentare

Hallo zusammen, ich habe einen PC von HP (Seriennummer: CZC3475D5D) Wollte hier Windows 7 Prof. installieren - es fehlt der SATA Treiber Leider kann ...

Hardware
Homelab - Gebrauchte Server Hardware?
gelöst kernl33Vor 1 TagFrageHardware16 Kommentare

Hallo zusammen, ich plane mir für mein Homelab einen 19 Zoll Server (2-4HE) anzulegen, es soll ein Hypervisor mit diversen VMs laufen. Hier zu ...

Cloud-Dienste
Server über zwei WAN Leitungen mit Load Balancing verfügbar machen
tobitobsnVor 1 TagFrageCloud-Dienste13 Kommentare

Moin zusammen, ich plane, einen Server im WAN über zwei Leitungen (Kabel und DSL) zwecks Ausfallsicherheit und Load Balancing verfügbar zu machen. Es sind ...

Sicherheitsgrundlagen
TI am Ende - Aus für Konnektor und elektronische Gesundheitskarte: Gematik stellt TI 2.0 vor
StefanKittelVor 1 TagInformationSicherheitsgrundlagen4 Kommentare

Hallo, nach der Großstörung in 2020 und allgemeinen Vorwürfen bezüglich der zweifelhaften Konnetktoren scheint die TI nun den Stecker ziehen zu wollen. Nachdem nun ...

Hardware
Cisco C9300 - zwei Kabel und nur 1 verbindet?
gelöst PeterGygerVor 1 TagFrageHardware14 Kommentare

Hallo Wir haben gestern ein paar C9300 im Lab aufgestellt. Spasseshalber haben wir mit 2 seriellen Kabeln über Win 10 / Putty uns mit ...

Windows Systemdateien
Sql Server 2014 mit extrem vielen DBs auf neuen Server migrieren
gelöst itnirvanaVor 1 TagFrageWindows Systemdateien6 Kommentare

SQL DB Migration auf anderen Server eigentlich ok. Management Studio export . Anderer Server Imporr. Berevhtigung neu setzen SQL User ersteölen etc Jetzt habe ...