artemis
Goto Top

Zeilen einer Textdatei cmd-fähig umbauen

Hallo zusammen!

Alle Zeilen einer Liste in einer Textdatei [klassfile.txt] sollen so umgebaut werden, daß sie das rename-Kommando ausführen können.
Die einzelnen Zeilen dieser Textdatei werden (im hier nicht angefragten Gesamtablauf) aus der Favoriten-Sektion einer mpc-hc64.ini ausgelesen und per ">>" successive hinzugefügt.
Diese Zeilen beinhalten nebst hier unbrauchbaren und zu löschenden Teilen sowohl den Dateinamen einzeln, als auch den kompletten Pfad mit Dateinamen, also genau die Zutaten, die für

REN [Laufwerk:][Pfad]Dateiname1 Dateiname2

benötigt werden. Die Zeilen sind alle nach demselben Muster aufgebaut und sollen alle in das entsprechende cmd-Muster wie folgt umgewandelt werden, Beispiel:


klassfile.txt:
set Name0=Bei den Windmühlen.mp4;13453713038;0;D:\Videos 17\Bei den Windmühlen.mp4
set Name0=Maßkrüge.mp4;50781329874;0;D:\Videos 3\Maßkrüge.mp4
set Name0=Zwischen den Stücken.mp4;12847659203;0;E:\Sammlung ALT\Aufnamen\Zwischen den Stücken.mp4
...
(der set-Befehl am Anfang der Zeilen wird vom auslesenden Tool inifile64 von Horst Schäffer automatisch hinzugefügt, wohl um die weitere Verarbeitung per Skript bereits zu erleichtern)

wird bearbeitet mit ini2ren.bat:
for /F ...
... ...genau danach frage ich mit diesem Thema

und wird dadurch zu ren2klass.bat [Var]:
@echo off
ren "D:\Videos 17\Bei den Windmühlen.mp4" "Bei den Windmühlen[Var].mp4"
ren "D:\Videos 3\Maßkrüge.mp4" "Maßkrüge[Var].mp4"
ren "E:\Sammlung ALT\Aufnamen\Zwischen den Stücken.mp4" "Zwischen den Stücken[Var].mp4"
...


Die Variable [Var] ist der eigentliche Sinn der Sache, um innerhalb eines (bereits fertigen) Gesamtskriptes eine Klassifizierung von Videodateien per Änderung des Dateinamens vorzunehmen. Das ganze kann deshalb erst nach der Materialsichtung und mittels einer Listensammlung gemacht werden, da Dateien, die gerade offen sind (abgespielt werden), nicht umbenannt werden können.

Im (bereits fertigen und somit hier nicht angefragten) Gesamtablauf soll dann die (per Menü) gewünschte Klassifizierung per Variable an die ren2klass.bat übergeben werden, Beispiel:

Wir haben die Dateien:

[Pfad]Bei den Windmühlen.mp4
[Pfad]Maßkrüge.mp4
[Pfad]Zwischen den Stücken.mp4

call ren2klass.bat !

...benennt anhand der zuvor erledigten Prozedur ini2ren.bat somit folgendermaßen um:

[Pfad]Bei den Windmühlen!.mp4
[Pfad]Maßkrüge!.mp4
[Pfad]Zwischen den Stücken!.mp4

oder

call ren2klass.bat ++

...ergibt:

[Pfad]Bei den Windmühlen++.mp4
[Pfad]Maßkrüge++.mp4
[Pfad]Zwischen den Stücken++.mp4

Als Klassifizierungsmarker am Ende der jeweiligen Dateinamen sollen (nach Möglichkeit) verwendet werden können:

!
!!
"+" (1 Pluszeichen)
"++" (2 Pluszeichen)
@
"#" (1 Doppelkreuzzeichen)
$
_ (Unterstrich)

(Die Zeichen in " " machen hier im Text am Zeilenanfang Probleme, geht schon los...)

Ich erwähne das deshalb, weil diese Zeichen(folgen) deshalb nicht skript-intern (weil befehlsfunktional) blockiert/ignoriert werden sollen. Falls es da Probleme gibt, bitte Bescheid sagen.

Eine derartige Umgestaltung von Textzeilen habe ich auch schon mal bei einem anderen Projekt erfolgreich mit einer Makrosprache gemacht, das hat aber die Nachteile,

- daß es umständlich und langsam ist,
- fehlerträchtig ist,
- nicht (immer) im Hintergrund ablaufen kann.

Die entsprechende Formulierung per FOR-Schleife übersteigt aber meine Fähigkeiten, und deshalb würde ich mich sehr freuen, wenn mir einer der Profis da weiterhelfen könnte.

Vielen Dank!
Artemis

Content-ID: 664945

Url: https://administrator.de/contentid/664945

Ausgedruckt am: 22.11.2024 um 07:11 Uhr

Penny.Cilin
Penny.Cilin 21.03.2021 aktualisiert um 10:15:10 Uhr
Goto Top
Hallo und Moin,

wenn es unbedingt Batch sein soll, dann folgend etwas Lesefutter bzgl. Windows Batch:
Lese Dir die obigen Tutorials durch und erarbeite Dir Deine Lösung.

Zudem verwende Codetags, um Codeschnipsel besser lesen zu können.
das entsprechende Zeichen findest Du links neben dem Editorfenster (zweites Symbol von unten)

Gruss Penny.
148021
148021 21.03.2021 um 11:52:20 Uhr
Goto Top
Hi,

cur vos postulo operari instructiones in lingua mortua?

Ich bin mit meinem Latein noch nicht am Ende face-wink
Archer