pbelcl
Goto Top

Dateien bezugnehmend auf Teil des Namens verschieben

Hallo Ihr Lieben,

Ich habe schon lange ein Batch laufen, das mir aufgenommene Videos aufgrund des Namens in verschiedene Ordner kopiert.
Bis jetzt war das Format einfach und entsprechend einfach war auch meine Batchdatei face-wink
Ich habe einfach für JEDEN Titel eine Zeile zum kopieren in meiner Batch drinnen gehabt.

Inzwischen habe ich einen neuen Receiver (Vu+) und möchte nun das Kopieren etwas mehr automatisieren.
Dazu muss ich aus den Dateien aufgrund von Bindestrichen den Namen der Sendung erkennen UND daraus einen Ordnernamen generieren um die Datei dann in den Ordner zu kopieren.
Ich habe eigentlich die ganze Kopierlogik schon fertig, aber mit dem "Ordner aus Dateinamen" komm ich noch nicht weiter.

Die Dateien sehen zum Beispiel so aus
20161019 1120 - ORF1 - Was gibt es Neues_.ts
20161020 1825 - ORF2 - heute konkret.ts
20161020 2010 - ORF1 - Undercover Boss.ts
20161021 0456 - RTL2 - GRIP - Das Motormagazin.ts
20161022 0443 - RTL2 - GRIP - Das Motormagazin.ts
20161023 1630 - RTL2 - GRIP - Das Motormagazin.ts
20161023 2010 - ORF2 - Tatort.ts
20161024 0530 - RTL2 - GRIP - Das Motormagazin.ts

Ich muss jetzt den Teil nach dem 2.Bindestrich in eine Variable tun und daraus den Ordnernamen erstellen.
Beispiel: "Was gibt es Neues", "heute Konkret", "Undercover Boss" u.s.w...

Könnt ihr mir eventuell mit einem Batch Codeschnipsel helfen?

Content-ID: 318976

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

Ausgedruckt am: 22.11.2024 um 12:11 Uhr

131301
Lösung 131301 24.10.2016 aktualisiert um 18:15:09 Uhr
Goto Top
Hallo,
hier stehts
Musterlösungen: Dateien verschieben abhängig vom Teil des Dateinamens

@echo off & setlocal enabledelayedexpansion
set "quelle=C:\quelle"  
set "ziel=D:\ziel"  
for /f "delims=" %%a in ('dir /b /s /a-d "%quelle%\*.ts"') do (  
    for /f "tokens=2* delims=-" %%b in ("%%~na") DO (  
       set "name=%%c" & set "name=!name:~1!  
       set "target=%ziel%\!name!""  
       if not exist "!target!" md "!target!" >nul  
       move "%%a" "!target!"  
    )
)
Gruß
Endoro
Endoro 24.10.2016 um 18:04:43 Uhr
Goto Top
Hey,
bitte sehr:
@echo off & setlocal
for /f "tokens=2*delims=-" %%a in ('dir /b/a-d *.ts') do (  
	for /f "tokens=*" %%c in ("%%~b") do (  
		echo md "%%~nc"  
	)
)

Gruß, Endoro
pbelcl
pbelcl 24.10.2016 aktualisiert um 18:27:37 Uhr
Goto Top
Danke für den Link!
Ich habe versucht einige der Codeteile für mich zu adaptieren.
Dort geht es um Zeichen am Anfang der Dateien, bei mir sind sie allerdings in der Mitte!
Leider habe ich den genauen Syntax (noch) nicht verstanden, daher helfen mir die Beispiele nicht besonders ;-(

Werd weiter basteln, vielleicht komm ich ja noch drauf.....
131301
131301 24.10.2016 aktualisiert um 18:43:53 Uhr
Goto Top
Werd weiter basteln, vielleicht komm ich ja noch drauf.....
? s. oben
Endoro
Lösung Endoro 24.10.2016 um 18:47:51 Uhr
Goto Top
Hey,
die verzögerte Erweiterung zerstört Zeichen und man braucht die hier nicht.
@echo off & setlocal
for %%x in (*.ts) do (
	for /f "tokens=2*delims=-" %%a in ("%%~x") do (  
		for /f "tokens=*" %%c in ("%%~b") do (  
			md "%%~nc" 2>nul  
			move "%%~x" "%%~nc"  
		)
	)
)

Gruß, Endoro.
131301
131301 24.10.2016 aktualisiert um 18:53:31 Uhr
Goto Top
Nur hast du dann überall Leerzeichen am Anfang des Ordnernamens.
Endoro
Endoro 24.10.2016 um 19:04:19 Uhr
Goto Top
Natürlich nicht! face-smile

"tokens=*" entfernt führende Leerzeichen.

Gruß, Endoro
pbelcl
pbelcl 28.10.2016 um 15:37:03 Uhr
Goto Top
Danke ihr Beiden @131301 und @Endoro für eure Tipps & Codeschnipsel!
Ich habe mir daraus eine Lösung zusammengebaut die gut funktioniert.
habe allerdings noch ein Problem mit meiner VU, das ich lösen muss, bevor das Batch zum Einsatz kommt, danke!!