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-Key: 318976

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

Printed on: April 24, 2024 at 11:04 o'clock

Mitglied: 131301
Solution 131301 Oct 24, 2016 updated at 16:15:09 (UTC)
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ß
Member: Endoro
Endoro Oct 24, 2016 at 16:04:43 (UTC)
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
Member: pbelcl
pbelcl Oct 24, 2016 updated at 16:27:37 (UTC)
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.....
Mitglied: 131301
131301 Oct 24, 2016 updated at 16:43:53 (UTC)
Goto Top
Werd weiter basteln, vielleicht komm ich ja noch drauf.....
? s. oben
Member: Endoro
Solution Endoro Oct 24, 2016 at 16:47:51 (UTC)
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.
Mitglied: 131301
131301 Oct 24, 2016 updated at 16:53:31 (UTC)
Goto Top
Nur hast du dann überall Leerzeichen am Anfang des Ordnernamens.
Member: Endoro
Endoro Oct 24, 2016 at 17:04:19 (UTC)
Goto Top
Natürlich nicht! face-smile

"tokens=*" entfernt führende Leerzeichen.

Gruß, Endoro
Member: pbelcl
pbelcl Oct 28, 2016 at 13:37:03 (UTC)
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!!