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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 664945
Url: https://administrator.de/contentid/664945
Ausgedruckt am: 22.11.2024 um 07:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo und Moin,
wenn es unbedingt Batch sein soll, dann folgend etwas Lesefutter bzgl. Windows Batch:
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.
wenn es unbedingt Batch sein soll, dann folgend etwas Lesefutter bzgl. Windows Batch:
- Windows Batch Grundlagen
- Batch - ein paar Basics die man kennen sollte
- Workshop Batch for Runaways - Part I
- Workshop Batch for Runaways - Part II
- Workshop Batch for Runaways - Part III
- HowTo - Wie man Subroutinen in Batchfiles erstellt
- Tutorial zur FOR-Schleife
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.
Hi,
cur vos postulo operari instructiones in lingua mortua?
Ich bin mit meinem Latein noch nicht am Ende
Archer
cur vos postulo operari instructiones in lingua mortua?
Ich bin mit meinem Latein noch nicht am Ende
Archer