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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 63483
Url: https://administrator.de/forum/entpacken-und-umbenennen-per-batch-63483.html
Ausgedruckt am: 07.04.2025 um 06:04 Uhr
8 Kommentare
Neuester Kommentar
Hallo Bierkistenschlepper!
Versuch es mal damit:
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
Versuch es mal damit:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@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
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
Muss die denn nicht im 7Zip-Ordner unter C:\Programme sein?
Hätte bastla dann zeilenweise das geschrieben, was er geschrieben hat? 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...
Grüße
Biber
@Biber
Du bist aber heute wieder streng ...
@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
Du bist aber heute wieder streng ...
@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