kingspride
Goto Top

Filmesammlung benennen via batch datei

Hi, also um es gleich vorwegzunehmen: Das Problem, das ich hier beschreibe, ist nicht mein eigenes sondern von jemandem, der wenig ahnung von PCs hat und ich daher in seinem namen diese frage hier eröffne. 2.: Ich selbst habe leider absolut keine ahnung von batch und shell scripten. ansatzweise habe ich mich mal mit der Programmiersprache Pascal / Delphi beschäftigt, aber das ist schon ein gutes Jahr her und viel verstanden habe ich aufgrund des Lehrers leider auch nicht.

Also nun zum Problem:

Ich habe eine Filmesammlung, die aus folgendem besteht: einer *.avi Datei, die den Film an sich beinhaltet, sowie ein Cover / mehrere Cover und eine Infodatei. Diese lege ich in folgendem Ordnersystem ab: Filme > [Genre] > FILMDATEI - [Filmtitel] > [Filmtitel].avi ; Filme > [Genre] > COVER - [Filmtitel] > *.jpg; *.png; usw. ; Filme > [Genre] > INFO - [Filmtitel] > *.nfo; *.txt; usw.

Nun will ich automatisiert die Ordnerstruktur innerhalb des [Genre]-Ordners anlegen, und zwar generiert aus dem dateinamen der [Filmtitel].avi.

Habe ich das verständlich erklärt oder nicht? Bitte fragt zurück, wenn irgendwas unklar ist!
Ansonsten Danke schon mal im Voraus,

MfG kingspride

Content-ID: 189699

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

Ausgedruckt am: 22.11.2024 um 16:11 Uhr

MrNetman
MrNetman 16.08.2012 um 09:54:31 Uhr
Goto Top
Hi Kingspride,

und wo ist jetzt die Frage?
Du hast die Ordnerstruktur schon komplett und die passenden Teile dort einsortiert.
Oder willst du statt:
Filme > [Genre] > FILMDATEI - [Filmtitel] > [Filmtitel].avi ;
Filme > [Genre] > COVER - [Filmtitel] > *.jpg; *.png; usw. ;
Filme > [Genre] > INFO - [Filmtitel] > *.nfo; *.txt; usw.
nun
[Filme] [Genre] [Filmtitel] Inhalt mit Film, Titelbildern und Infos.

Gruß
Netman
kingspride
kingspride 16.08.2012 um 10:09:00 Uhr
Goto Top
hallo, danke schon mal für die antwort.

nein, ich habe diese ordner struktur eben noch nicht / bzw. erst teilweise angelegt, da das manuell doch sehr aufwendig und mühsehlig ist. der zustand momentan ist so, dass die *.avis im genre ordner rumfliegen und ich diese gerne für die erstellung der ordnerstruktur nutzen will. die entsprechenden dateien wegsortieren kann ich dann auch selber machen, bloss eben eine solche ordnerstruktur anzulegen für mehr als 50 filme ist schon sehr zeitaufwendig, vor allem wenn für [Filmtitel] zb. "Die Entführer lassen grüßen, Frankreich 1972, 116 Min" eingetragen ist.
Darkprodukt
Darkprodukt 18.08.2012, aktualisiert am 19.08.2012 um 02:22:44 Uhr
Goto Top
Hallo Kingspride,

hab mich mal Drangesetzt.

Ungetestet:
@echo off & setlocal

type >Dateinamen.txt
type >Dateipfade.txt
type >Kopieren.txt
cls

set "Pfad=C:\Test\"  

for /f "delims=" %%I in ('dir /a-s-h-d /b /s "%Pfad%*avi"') do echo %%~nI>>Dateinamen.txt  
for /f "delims=" %%I in ('dir /a-s-h-d /b /s "%Pfad%*avi"') do echo %%~fI>>Dateipfade.txt  

for /f "delims=" %%I in ("Dateinamen.txt") do mkdir %Pfad%%%I && timeout /t 1 /NOBREAK>NUL  

set "InFile1=Dateipfade.txt"  
set "InFile2=Dateinamen.txt"   
set "OutFile=Kopieren.txt"  

< "%InFile1%" >>"%OutFile%"	(  
				 for /f "usebackq delims=" %%a in ("%InFile2%") do (  
										    set /p "Line="   
										    setlocal enabledelayedexpansion 
										    echo\"!Line!" "!Pfad!%%a\"   
										    endlocal 
										    )
				 )

for /f "delims=" %%I in ("Kopieren.txt") do xcopy %%I /C /Y  

pause
if exist Dateinamen.txt del Dateinamen.txt
if exist Dateipfade.txt del Dateipfade.txt
if exist Kopieren.txt del Kopieren.txt
exit 0

Edit2: So solte es Fungtionieren.

Grüße
Darkprodukt
kingspride
kingspride 18.08.2012 um 17:32:35 Uhr
Goto Top
hey, danke dass du mir ein script geschrieben hast. werde es auch demnächst dann ausprobieren, aber vorher muss ich noch fragen, was ich anpassen muss, wegen pfaden und dateinamen. oder werde ich gefragt?

danke schon mal.
Darkprodukt
Darkprodukt 19.08.2012 aktualisiert um 02:24:17 Uhr
Goto Top
Abend,

ersetze einfach Zeile 08 duch
set "Pfad=(HIER-DEN-PFAD-EINTRAGEN-VOM-ORDNER-GENERE)"  

Du kannst auch einstellen das du nach dem Pfad gefragt wirst in dem du ein /p nach set schreibst also so
set /p "Pfad=Bitte gib den Pfad des Ordners mit den .avi Datein mit einem \ am Ende an: "  

Grüße
Darkprodukt

Edit1: Nach dem Starten des Skripts einfach auf die Meldung:
Drücken Sie eine beliebige Taste . . . (oder so ähnlich)
Warten. Fals sich das Fenster schlißt mitte nochmal Melden.
kingspride
kingspride 19.08.2012 um 19:14:41 Uhr
Goto Top
okay, danke schön. werde ich mal ausprobieren!
pieh-ejdsch
pieh-ejdsch 19.08.2012 aktualisiert um 22:58:42 Uhr
Goto Top
moin kingspride,

auch wenn schon ein Lösungsvorschlag hier steht, wie ist den der Dateiname Formatiert? Bzw. woraus wird die Information des Genre genommen?
Diese aus der Infodatei zu entnehmen wäre ja der einfachste Weg.

Dann kann auch gleich nach den Mustern gesucht werden und entsprechend die Dateien einsortiert werden.

und bitte nimm die:
<code>CodeFormatierung
zur Hilfe.
D:\Wie sieht denn der Dateiname - [Formatiert] xyz (aus).avi

D:\Filme\[Genre]\FILMDATEI - [Filmtitel]\[Filmtitel].avi
D:\Filme\[Genre]\COVER - [Filmtitel]\*.jpg
D:\Filme\[Genre]\INFO - [Filmtitel]\*.nfo


Sonst könntest Du über die gängig(st)en nfo Files das Genre auslesen.
@echo off
if "%~1" equ "/?" echo Kopiert Avi und zugehörige nfo; txt; jpg; png; bmp &exit /b 0  
if not exist "%~1" echo Ordner nicht Gefunden. Ordner auf den Batch ziehen. &exit /b 2  
if not exist "%~1\*.avi" echo Keine AVI Gefunden. Ordner mit AVI auf den Batch ziehen. &exit /b 1  
setlocal
set "Ziel=D:\Filme\"  
set "Pics=jpg,png,bmp"  
set "Info=nfo,txt"  

for /r "%~1" %%i in (*.avi) do (  
  for /f "tokens=2*delims=:" %%a in (' findstr /i "\<genre\>" "%%~dpni.nfo" ') do (  
    for /f %%a in ("%%a") do (  
      xcopy "%%~i" "%Ziel%%%~a\FILMDATEI - [%%~ni]\[%%~ni]%%~xi"  
      for %%b in (%pics%) do for %%b in ("%%~dpni.%%b) do xcopy "%%~b" "%Ziel%%%~a\COVER - [%%~ni]\%%~nxb"  
      for %%b in (%info%) do for %%b in ("%%~dpni.%%b) do xcopy "%%~b" "%Ziel%%%~a\INFO - [%%~ni]\%%~nxb"  
) ) )

Gruß Phil
kingspride
kingspride 20.08.2012 aktualisiert um 10:14:53 Uhr
Goto Top
aus den nfos auszulesen halte ich für nicht so sinnvoll, da dort öfter mal ascii art drin sind und es so sicherlich zu fehlern kommt. ansonsten sind die avi dateien folgendermaßen benannt:

D:\Filme\Komödie\FILMDATEI - Die Entführer lassen grüßen, Frankreich 1972, 116 Min\Die Entführer lassen grüßen, Frankreich 1972, 116 Min.avi

Allgemein:

D:\Filme\[Genre]\FILMDATEI - [Titel], [Ort/Jahr], [Dauer]\[Titel], [Ort/Jahr], [Dauer].avi

besser so? face-smile
pieh-ejdsch
pieh-ejdsch 20.08.2012 um 16:50:35 Uhr
Goto Top
moin kingspride,

wenn die Filmdaten schon in dem jeweiligen Genre Ordner liegen erübrigt sich natürlich das Auslesen des Genre.
Sonst sortiert der Batch auch bei [vorher ASCI-Art ohne Doppelpunkt] richtig.
Dem Xcopy kannst Du zum AnTesten / nur Anzeigen ja noch die Option /L spendieren. Gesteartet in der CMD-Line zeigt Dir der Batch nun nur An was er täte.

Wo genau liegen denn die Filmdaten und die Zugehörigen Extras? Also bevor die Struktur erzeugt wird?

Gruß Phil
kingspride
kingspride 21.08.2012 um 21:43:03 Uhr
Goto Top
hallo darkprodukt, ich hab nun deine batch datei ausprobieren lassen und es scheint irgendwas fehlerhaft zu sein.

es kommt folgender text beim ausführen: (nach eingabe des pfads zum genre ordner)

C:Kopieren.txt
Datei kann nicht auf sich selbst kopiert werden
0 Datei(en) kopiert
Drücken Sie eine beliebige Taste...
Biber
Biber 21.08.2012 um 21:59:57 Uhr
Goto Top
Moin kingspride,

Zitat von @kingspride:
hallo darkprodukt, ich hab nun deine batch datei ausprobieren lassen und es scheint irgendwas fehlerhaft zu sein.

Dann lass doch mal Zeile 28 prüfen...

Grüße
Biber
pieh-ejdsch
pieh-ejdsch 21.08.2012, aktualisiert am 24.08.2012 um 14:55:55 Uhr
Goto Top
moin,

was ist denn nun mit dem Genre? Aus dem Dateinamen ist es nicht zu extrahieren.

@Biber Da lässt sich nun endlich die Info entnehmen die ich schon lange wollte. Der Weg ist das Ziel äähm die Quelle ist ... meine ich.

Wenn die Avi im Genre Ordner schon sind dann sortiert der Batch alles in die Passenden Ordner.
Erst mit testdaten testen.
@echo off
setlocal

 rem Die Filme und der Rest müssen im Genre Ordner liegen
 rem zB. "D:\Filme\Genre\*.AVI" ...  

set "Ziel=D:\Filme\"  
set "Pics=jpg,png,bmp"  
set "Info=nfo,txt"  
set "VFilm=FILMDATEI - "  
set "VCover=COVER - "  
set "VInfo=INFO - "  


for /r "%Ziel%" %%i in ( *.avi ) do (  
  for /f "tokens=3,4delims=\" %%a in ( "%%~i" ) do if %%~xi equ %%~xb (  
    echo Genre Ordner: %%a
    if not exist "%Ziel%%%~a\%VFilm%%%~ni\" md "%Ziel%%%~a\%VFilm%%%~ni\"  
    move "%%~i" "%Ziel%%%~a\%VFilm%%%~ni\"  
    for %%b in (%pics%) do for %%b in ( "%%~dpni.%%b?" ) do (  
      if not exist "%Ziel%%%~a\%VCover%%%~ni\" md "%Ziel%%%~a\%VCover%%%~ni\"  
      move "%%~b" "%Ziel%%%~a\%VCover%%%~ni\"  
    )
    for %%b in (%info%) do for %%b in ( "%%~dpni.%%b?" ) do (  
      if not exist "%Ziel%%%~a\%VInfo%%%~ni\" md "%Ziel%%%~a\%VInfo%%%~ni"  
      move "%%~b" "%Ziel%%%~a\%VInfo%%%~ni\"  
    )
  ) else echo "%%i" --^> Schon sortiert? - oder ist im Falschen Verzeichnis.  
)
pause

Gruß Phil
kingspride
kingspride 21.08.2012 um 22:41:33 Uhr
Goto Top
auch nochmal danke dafür. mal sehen ob dein script geht.

zu den pfaden: hatte ich ja eigentlich schon geschrieben, dass die avis in den genre ordnern sind. aber eben unsortiert.
Darkprodukt
Darkprodukt 23.08.2012 aktualisiert um 00:27:10 Uhr
Goto Top
Guten Abend kingspride,

hatte leider die Tage keine Zeit im Board vorbei zu schauen.
Hab aber jezt eine getestete Version die, Fungtioniert.

@echo off & setlocal

type >Dateinamen.txt
type >Dateipfade.txt
type >Kopieren.txt
cls

set /p "Pfad=Bitte geben sie den Ordner in denen Sich die AVIs befinden mit einem \ am Ende an: "  

for /f "delims=" %%I in ('dir /a-s-h-d /b /s "%Pfad%*avi"') do echo %%~nI>>Dateinamen.txt  
for /f "delims=" %%I in ('dir /a-s-h-d /b /s "%Pfad%*avi"') do echo %%~fI>>Dateipfade.txt  

for /f "delims=" %%I in ('type "Dateinamen.txt"') do mkdir "%Pfad%%%I" && timeout /t 1 /NOBREAK>NUL  

set "InFile1=Dateipfade.txt"  
set "InFile2=Dateinamen.txt"   
set "OutFile=Kopieren.txt"  

< "%InFile1%" >>"%OutFile%"	(  
				 for /f "usebackq delims=" %%a in ("%InFile2%") do (  
										    set /p "Line="   
										    setlocal enabledelayedexpansion 
										    echo\"!Line!" "!Pfad!%%a\"   
										    endlocal 
										    )
				 )

for /f "delims=" %%I in ('type "Kopieren.txt"') do move /Y %%I  

pause
if exist Dateinamen.txt del Dateinamen.txt
if exist Dateipfade.txt del Dateipfade.txt
if exist Kopieren.txt del Kopieren.txt
exit 0

So viel Spaß mit der Batch.

Grüße
Darkprodukt
Compi1
Compi1 24.08.2012 aktualisiert um 07:47:38 Uhr
Goto Top
leider geht das Skript nicht es sclhießt dauernd
ich habe es z.b. geschafft mit einer Batch die mri wer schriebt
aus den Avis einen Ordner mti den selben Namen zu machen
also aus

Avatar, USA 2007, 170 Min. avi
wurde dann ein Ordner
Avatar, USA 2007, 170 Min mit dem Avi drinnen
ok?
gut
mit Total Commander hänge ich das Wort
FILMDATEI an
da habe ich dann FILMDATI - Avatar, USA 2007, 170 Min als Ordner
mit dem Avi drinnen
das ganze gehört jetzt in einen Ordner
der was genauso wie das Avi heißt
also Ordner muß erstellt werden mti dem selben Namen wie Avi und der Filmdatei ordner muß dann gleich rein kopiert werden
es kann doch nicht sein dass das nicht funktioniert, das gibts doch nicht
habe Win 7 und pc
kann da einer helfen bitte?
ich habe 500 avis
und wenn ich gehe auf ordner neu erstellen, avi titel kopiren und den ordner neu erstellen eben und das ganze verschiebe und das 500 x mache sitze ich 3 stunden.

das jedenfalls habe ich versucht
das skript rein kopiert in ein notepad
war gar nicht zu kopieren
mußte die zahlen da ruaslöschen
war irre schwer

http://www.bilder-hochladen.net/files/80ua-q0-e205-jpg.html

wie ihr seht
gar nix wird erstellt
und in dem ordner der dann da ist, und den unnötigen skript dateien die gar nicht hergehören
ist kein ordner Filmdatei drinnen mit dem Avi
verstehst du?

und selbst wenn ich den ordner erstelle mit Filmdatei dann kommt mit dem Batch das raus

http://www.bilder-hochladen.net/files/80ua-q1-b56a-jpg-nb.html

da ist auch nix drinnen
ja absolut nix
ja kann da wer helfen bitte?
pieh-ejdsch
pieh-ejdsch 24.08.2012 um 14:59:49 Uhr
Goto Top
moin,

Ich hoffe ja diese Blockbuster sind alles "nur" Sicherheitskopien oder "DigitalCopy".

Skript ist jetzt lauffähig.

Gruß Phil
Compi1
Compi1 25.08.2012 aktualisiert um 08:53:27 Uhr
Goto Top
tv karte z.b. oder dvd kopieren von orgiinal damit man die dvd weggeben kann aber auf avi konvertieren usw.
wie soll ich das batch bitte kopieren hier wenn bei strg c lauter zahlen dann links stehen? das geht ja gar nich raus kopieren

ah quelltext
nein du hast da was missverstanden
das avi wird in einen ordner verschoben - stimmt
ich möchte aber dass dieser ordner -an dem ich noch das kürzel filmdatei anhängen muß, wieder in einen ordner verschoben wird

siehst du bild 1 - http://www.bilder-hochladen.net/files/80ua-q2-2a9d-jpg.html
da wird so ne komische datei wie kopieren usw. erstellt
wie du siehst, es wird nur die datei mit dem avi erstellt, siehst du?
bei bild 2 hänge ich dann das kürzel - filmdatei an, wie du siehst
dieser ordner gehört in noch einen ordner verschoben der nur dann den filmtitel trägt, verstehst du?
dann ohne das kürzel filmdatei
dann machbe ich den ordner auf udn habe dann den ordner filmdatei drinnen, verstehst du?
hier bild 2
http://www.bilder-hochladen.net/files/80ua-q3-8b50-jpg-nb.html
da ist dann der ordner filmdatei wie du siehst
und dieser gehört in einen ordner mit dem Namen - inki usw.
also einfach nur ein ordner, da drückt man normal auf neuer ordner erstellen, kpiert den Namen raus und schiebt den Rein
verstehst du? das möchte ich automatisch haben
das skript geht super, von avi in order, sowas habe ich eh
ich habe z.b. ein skript das würde ich dir gerne zeigen wo ich gar nix drücken muss, also den Pfad so wie du ds gesagt hast, oder wie das skript zeigt, das ist super, mir geht es nur um den ordner erstellen wo der filmdatei ordner rein kommt
pieh-ejdsch
pieh-ejdsch 25.08.2012 um 15:08:24 Uhr
Goto Top
moin Compi,

ich meine ja auch das Script hier: Filmesammlung benennen via batch datei.

Dein Verzeichnis Ziel ist dann K:\Filme in Zeile 07. anzupassen.
Der Ordner Kinder entspäche dann dem Genre.

Gruß Phil
Compi1
Compi1 25.08.2012 aktualisiert um 19:26:09 Uhr
Goto Top
also
K:\FILME\Krieg ist der ordner
http://www.bilder-hochladen.net/files/80ua-q6-23ce-jpg.html
siehst du das skript? stimmts?

so 20minuten später

ja heureka es geht das skript ja super danke

jetzt gehts ja weiter

wie geht dass, dass dann dieser filmdatei ordner in den überordner kommt? also das gleiche noch mal
wo dann der ordner mit dem filmtitel erstellt wird und ohne dem zusatz filmtitel - verstehst du?
dass also der Filmtitel ordner in den ordner reinrutscht was dann den filmnamen trägt
also ich öffne den ordner mit dem jewiligen filmtitel und habe den filmtitel ordner mit dem avi drinnen
verstehst?