bierkistenschlepper
Goto Top

Entpacken und Umbenennen per Batch

Hallo,

ich weiß es gibt hier schon viele Threads zu einem ähnlichen Thema, aber ich bin in Sachen Batch-Programmierung ein echter Noop.

Folgendes Problem:
Ich habe eine TV-Serie aufgenommen und möchte sie jetzt mit Untertiteldateien aus dem Netz versehen. Diese haben das Format *.srt und sind in Zip-Archiven Nach dem Schema
StaffelxFolge-de-irgendein komischer Code.zip
also z.B. 8x18-de-A41cBAQJTn.zip
Darin enthalten ist dann jeweils eine Datei namens deutsch.srt.

Ich kann sie also nichtmal alle auf einen Rutsch entpacken aufgrund des gleichen Namens. Ziemlich dämlich aber so ist es leider.
Damit das Einbinden der UTs klappt sollten sie den gleichen Namen wie die *.avi-Dateien haben, also z.B.
Stargate SG1 8x18 - Jim.avi

Jetzt die Frage, wäre es irgendwie möglich immer eine Datei zu entpacken (Habe 7-Zip drauf), dann zu gucken zu welcher Folge sie gehört und umzubenennen?

Die Untertitel (zip und srt) sind in einem Ordner subtitles, der ein Unterordner des Filmordners ist.

Ihr könnt euch ja sicher vorstellen, was das jedesmal für eine Klickorgie gibt. Leider bin ich kein Batch-Crack und würde es allerhöchstens auf die Reihe kriegen Dateien nach einem festen Schema umzubenennen. DAs hier jedoch übersteigt meine Kenntnisse gewaltig...

Wäre wirklich nett, wenn einer von euch mir da vielleicht ein kleines Skript bauen könnte face-smile

Content-Key: 63483

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

Printed on: April 25, 2024 at 04:04 o'clock

Member: bastla
bastla Jul 10, 2007 at 20:51:11 (UTC)
Goto Top
Hallo Bierkistenschlepper!

Versuch es mal damit:
@echo off & setlocal
pushd "D:\Film\subtitles"  
set "srtFile=deutsch.srt"  
for %%i in (*.zip) do call :ProcessFile "%%i"  
popd
goto :eof
:ProcessFile
for /f "delims=-" %%f in ('echo %~1') do set Folge=%%f  
set Film=
for %%a in ("..\* %Folge%*.avi") do set "Film=%%~na"  
::Entsprechende Filmdatei vorhanden?
if not defined Film goto :eof
7za e %1 %srtFile%
::srt-Datei vorhanden?
if not exist %srtFile% goto :eof
ren %srtFile% "%Film%.srt"  
::zip.Datei auch umbenennen
ren %1 "%~1.done"  
goto :eof
Damit es klappen kann, muss neben den von Dir genannten Voraussetzungen ("subtitles" liegt unterhalb des "Film"-Verzeichnisses - dieses bitte in Zeile 2 anpassen; Folge ist erster Namensbestandteil der .zip-Datei) auch gelten: Die Folge ist im Namen der .avi-Datei nach einer Leerstelle enthalten (also nicht etwa "Stargate SG18x18 - Joe.avi") - die Leerstelle dient zum ev nötigen Unterscheiden der Folgen 1x18 und 11x18 (obwohl es dieses Problem bei "Stargate" nicht geben wird).

Wenn eine übereinstimmende .avi-Datei gefunden wurde und aus der .zip-Datei eine "deutsch.srt" extrahiert werden konnte (ev musst Du für die 7za.exe den gesamten Pfad angeben, also etwa "C:\Utils\7zip\7za.exe"), wird die .srt-Datei entsprechend umbenannt und die .zip-Datei erhält den Zusatz ".done", um sie von nicht verarbeiteten .zip-Dateien unterscheidbar zu machen.

Grüße
bastla
Member: Bierkistenschlepper
Bierkistenschlepper Jul 11, 2007 at 06:21:53 (UTC)
Goto Top
Du bist ein Schatz face-smile
Meine linke Maustaste wird es dir danken!!

Ich habe gerade nichts umzubenennen da, aber wenn ich die nächste Staffel überspiele werde ich es testen und Bericht erstatten!

Noch eine Frage, wo muss denn der Pfad zu 7-Zip hin?
Member: bastla
bastla Jul 11, 2007 at 06:46:12 (UTC)
Goto Top
Hallo Bierkistenschlepper!

wo muss denn der Pfad zu 7-Zip hin?
Den Speicherort für die "7za.exe" kannst Du selbst festlegen - wenn Du sie im Windows- (oder einem anderen in %path% enthaltenen) Verzeichnis ablegst, brauchst Du gar keinen Pfad anzugeben.

Grüße
bastla
Member: Bierkistenschlepper
Bierkistenschlepper Jul 11, 2007 at 06:47:56 (UTC)
Goto Top
Muss die denn nicht im 7Zip-Ordner unter C:\Programme sein?
Member: Biber
Biber Jul 11, 2007 at 07:07:38 (UTC)
Goto Top
Muss die denn nicht im 7Zip-Ordner unter C:\Programme sein?
Hätte bastla dann zeilenweise das geschrieben, was er geschrieben hat? face-wink

bastla gibt ja durchaus Antworten und Lösungen.
Bitte so etwas dann auch einfach mal gebührend behandeln.
Also Lesen - Sacken lassen - nochmal lesen - testen - erst danach nochmal ungläubig fragen...

face-big-smile

Grüße
Biber
Member: bastla
bastla Jul 11, 2007 at 07:28:55 (UTC)
Goto Top
@Biber
Du bist aber heute wieder streng ... face-wink

@BKS
Die Commandline-Variante von 7-Zip gibt es auch als eigenen Download (Entschuldigung, hatte oben nur den Download-Link gesetzt, aber nicht darauf hingewiesen), und da diese keiner "Installation" bedarf, kannst Du einfach die "7za.exe" in einen passenden Ordner legen ...

[Edit] Nachtrag: Wenn Du aber "7za.exe" durch "7z.exe" ersetzt (mit der GUI-Version mitgeliefert - habe ich gerade erst festgestellt), müsste es auch gehen - dann gilt auch der von Dir genannte Pfad. [/Edit]

Grüße
bastla
Member: Bierkistenschlepper
Bierkistenschlepper Jul 24, 2007 at 12:39:34 (UTC)
Goto Top
Es klappt einwandfrei!!! Allerdings heißt die Datei bei mir 7z.exe. Keine Spur von einem a. Ich habe die dann einfach umbenannt.

Darf ich dein Skript weitergeben an die Webseite http://subtitles.stargate-sg1.hu/, dort gibt es nämlich die Untertitel und die haben bestimmt verwendung dafür face-smile

Sag mir doch einfach Bescheid!
Member: bastla
bastla Jul 24, 2007 at 12:50:26 (UTC)
Goto Top
Hallo BKS!

Das Umbenennen wäre gar nicht erforderlich gewesen - siehe oben ...

Darf ich dein Skript weitergeben ...
Klar.

Grüße
bastla