edit: siehe letzter Post: NICHT mehr für UL auf Main verwenden!
Da ich von Natur aus ein fauler Mensch bin habe ich mir heute einmal die Zeit genommen den doch recht Zeitaufwändigen Prozess des packens zu automatisieren.
Das folgende Script packt jede *.mkv-Datei in einem gegebenen Verzeichnis nach einem festgelegten Schema und speichert diese in einem anderen ihm gegebenen Verzeichnis.
Es kann eingestellt werden ob das Verzeichnis rekursiv durchforstet werden soll oder nicht.
Es werden Archivnamen aus dem Originalen Dateinamen generiert und es wird zwischen 720p.Web/1080p.Web/720p/1080p sowie dem fehlen einer solchen Stufe unterschieden.
Es muss angemerkt werden, dass die Zielarchivgröße ca. 1,5 MB höher ist als das was man angegeben hat. Dies habe ich so geschrieben, da die Upload-Prämien meist eine Mindestgröße voraussetzen, damit niemandem der diese Script nutzt Prämien aufgrund ein paar fehlender Bytes je Datei verloren gehen.
Ich muss dazu sagen, dass ich beruflich hautpsächlich SQL-Code schreibe und mit der Powershell und RegEx recht wenig zu tun habe. Daher ist das Script eher auf Funktionalität als auf effektivität ausgerichtet.
Der Packvorgang an und für sich ist langsamer, aber das holt man durch die gesparte Tipp und einstellungszeit mehr als wieder raus.
Falls ihr das Script einfach nur nutzen wollt sind folgende Schritte zu befolgen:
1. Öffnet einen Texteditor
2. Kopiert den unten stehenden Code und fügt ihn im Texteditor ein
3. Ändert die Parameter im ersten Block nach euren Bedürfnissen
3. Speichert die datei mit der Endung .ps1
4. Öffnet die Powershell
5. Falls ihr auf dem Computer noch nie ein PS-Script ausgeführt habt folgenden Befehl ausführen und bestätigen: Set-ExecutionPolicy Unrestricted
6. Script ausführen und warten
Hinweis: Ich empfehle das Scriptnicht per Doppelklick auszuführen, da sich dann das Fenster nach getaner Arbeit automatisch wieder schließt (und eventuelle Fehler nicht lesbar sind).
Bekannte Einschränkungen:
Serienname muss mindestens 3 Zeichen vor der ersten Zahl betragen.
Datei muss S gefolgt von 1-3 Zahlen, gefolgt von E und genau 2 Zahlen enthalten
So, ich hoffe das geschriebene ergibt Sinn.
Würde mich freuen wenn ich Feedback bekäme, wenn ich es auch hauptsächlich für mcih selbst geschrieben habe.
Script:
- #---------------------------------------------------
- # Benutzerangaben
- #---------------------------------------------------
- $SOURCE="F:" # Hier das Verzeichnis angeben, in welchem die zu packenden Dateien liegen
- $DESTINATION="F:\upload" # Hier das Zielverzeichnis für die gepackten Dateien angeben
- $RAR_EXE="F:\rar\rar.exe" # Hier den vollqualifizierten Dateinamen der rar.exe angeben (z.B.: C:\Programme\Winrar\rar.exe)
- $recurse=1 #1= Unterverzeichnisse werden geprüft - 2= Unterverzeichnisse werden ignoriert
- $sizemodifier="M" #Hier die Maßeinheit für die Archivgröße angeben: M=MB G=GB K=KB B=Byte T=TB
- [Int64]$size=100 #Hier die Größe der Archive angeben
- #------------------------------------------
- #Beginn der Ausführung
- #
- #------------------------------------------
- switch ($sizemodifier){
- "K" { $size*=1024 }
- "M"{ $size*=(1024*1024)}
- "G"{ $size*=(1024*1024*1024)}
- "T"{ $size*=(1024*1024*1024*1024)}
- }
- $size/=1000
- $size+=2000
- echo $size
- $regex1="^([A-Z]{1,3})[A-Z]*.?([A-Z]{1,3})[A-Z]*\S*(S\d{1,3}E\d{2}).?.*\S*(720p?|1080p*)\S*(web)\S*[.]mkv"
- $regex2="^([A-Z]{1,3})[A-Z]*.?([A-Z]{1,3})[A-Z]*\S*(S\d{1,3}E\d{2}).?.*\S*(720p?|1080p*)\S*[.]mkv"
- $regex3="^([A-Z]{1,3})[A-Z]*.?([A-Z]{1,3})[A-Z]*\S*(S\d{1,3}E\d{2}).?.*\S*[.]mkv"
- $ziel=""
- # Fragt die Dateien ab - rekursiv oder eben auch nicht
- if($recurse -eq 1){
- $files=gci -recurse ($SOURCE)
- }
- else{
- $files=gci ($SOURCE)
- }
- if( -not (Test-Path $DESTINATION) )
- {
- New-Item $DESTINATION -type directory
- }
- foreach($file in $files){
- if($file.Extension -like ".mkv"){
- #echo $file.name
- $ziel=$file.name
- if($ziel -match $regex1){
- $ziel=$ziel -replace $regex1,'$1$2.$3.$4.$5.rar'
- }
- else {
- if($ziel -match $regex2){
- $ziel=$ziel -replace $regex2,'$1$2.$3.$4.rar'
- }
- else{
- $ziel=$ziel -replace $regex3,'$1$2.$3.rar'
- }
- }
- $ziel=$DESTINATION + "" + $ziel
- #--------------------------------------------
- $Command=$RAR_EXE+" a -v"+$size+" '-hpserienjunkies.org' -m0 -r- -rr4 -mt20 '"+$ziel+"' '"+$file.fullname+"'"
- # echo $Command
- Invoke-Expression $Command # Packvorgang
- #----------------------------
- }
- }