VB Script gesucht um Videodateien auslesen zu können.
Hallo zusammen,
ich habe einen Kunden der auf seinem SAN hunderte von Präsentationsvideos angesammelt hat. Diese sollen nun in ein System überführt werden, welches bestimmte Voraussetzungen an die jeweiligen Videodateien hat.
Hat jemand eine Idee wie man ein VB Script schreiben könnte, das eine Textdatei als Ausgabe erstellt in etwa so:
Filmtitel1.avi;Grösse(MB);Laufzeit(Minuten);Bitrate(Ton);Codec(Ton);Bitrate(Video);Codec(Video);Abmessungen(720x576)
Filmtitel2.avi;Grösse(MB);Laufzeit(Minuten);Bitrate(Ton);Codec(Ton);Bitrate(Video);Codec(Video);Abmessungen(480x576)
usw....
So, das man diese in einem Excelsheet importieren kann und nach den Dateien suchen kann, die neu konvertiert werden müssen? Es müssten auch Unterordner (zwei Ebenen) durchsucht werden.
Ihr kennt mich - Meine Spezialität sind Citrix- und Terminalserver. Hier muss ich passen. Auf die jeweiligen Codecs Bbild und Ton) könnte verzichtet werden. Es wäre aber schön, wenn das auch als Information dann mit in
der Textausgabe stehen würde.
Es wäre Super wenn mir jemand aus dem Script-Bereich hier helfen könnte.
Das ganze eilt natürlich nicht. Es ist nur mühsam jede einzelne Datei sichten zu müssen wenn man das Scripten könnte, aber ihr kennt das ja bestimmt selbst
Viele liebe Grüsse an alle
Ralph
ich habe einen Kunden der auf seinem SAN hunderte von Präsentationsvideos angesammelt hat. Diese sollen nun in ein System überführt werden, welches bestimmte Voraussetzungen an die jeweiligen Videodateien hat.
Hat jemand eine Idee wie man ein VB Script schreiben könnte, das eine Textdatei als Ausgabe erstellt in etwa so:
Filmtitel1.avi;Grösse(MB);Laufzeit(Minuten);Bitrate(Ton);Codec(Ton);Bitrate(Video);Codec(Video);Abmessungen(720x576)
Filmtitel2.avi;Grösse(MB);Laufzeit(Minuten);Bitrate(Ton);Codec(Ton);Bitrate(Video);Codec(Video);Abmessungen(480x576)
usw....
So, das man diese in einem Excelsheet importieren kann und nach den Dateien suchen kann, die neu konvertiert werden müssen? Es müssten auch Unterordner (zwei Ebenen) durchsucht werden.
Ihr kennt mich - Meine Spezialität sind Citrix- und Terminalserver. Hier muss ich passen. Auf die jeweiligen Codecs Bbild und Ton) könnte verzichtet werden. Es wäre aber schön, wenn das auch als Information dann mit in
der Textausgabe stehen würde.
Es wäre Super wenn mir jemand aus dem Script-Bereich hier helfen könnte.
Das ganze eilt natürlich nicht. Es ist nur mühsam jede einzelne Datei sichten zu müssen wenn man das Scripten könnte, aber ihr kennt das ja bestimmt selbst
Viele liebe Grüsse an alle
Ralph
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 250128
Url: https://administrator.de/contentid/250128
Ausgedruckt am: 22.11.2024 um 04:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo Ralph,
ich hatte mal eine Powershell-Funktion geschrieben das die erweiterten Dateieigenschaften auslesen kann:
Erweiterte Dateieigenschaften mit Powershell-Funktion abfragen
Das Ergebnis dann an das CMDLet export-csv gepiped und schon hast du deine Liste
Checke mal ob es deinen Anforderungen genügt.
Grüße Uwe
ich hatte mal eine Powershell-Funktion geschrieben das die erweiterten Dateieigenschaften auslesen kann:
Erweiterte Dateieigenschaften mit Powershell-Funktion abfragen
Das Ergebnis dann an das CMDLet export-csv gepiped und schon hast du deine Liste
Checke mal ob es deinen Anforderungen genügt.
Grüße Uwe
Zitat von @templier:
ich danke Dir für Dein schnelles Feedback - Powershell ist dort aber nicht installiert. Soll/darf auch nicht installiert
werden. Deswegen suche ich das ja im VB Script
da habe ich auch noch was auf Lager, muss mal kramen Die Codecinfo ist aber IMHO out of the Box mit VBS nicht möglich, da müsste man ein Zusatztool bemühen.ich danke Dir für Dein schnelles Feedback - Powershell ist dort aber nicht installiert. Soll/darf auch nicht installiert
werden. Deswegen suche ich das ja im VB Script
So hier der Code, die Dateieigenschaftszuordnung wurde mit einem Windows 7 x64 gestestet, es könnte eventuell sein das auf einem anderen OS die Eigenschaften andere Nummern haben, musst du testen.
Der Pfad zu den Videos gibst du in Zeile 2 an und die Ausgabedatei in Zeile 4 und in Zeile 6 gibst du die zu verarbeitenden Dateierweiterungen an. Das Script durchsucht den Ordner rekursiv, also auch in allen Unterordnern.
Grüße Uwe
Der Pfad zu den Videos gibst du in Zeile 2 an und die Ausgabedatei in Zeile 4 und in Zeile 6 gibst du die zu verarbeitenden Dateierweiterungen an. Das Script durchsucht den Ordner rekursiv, also auch in allen Unterordnern.
'Ordner mit den Dateien
Const strFolder = "C:\Videos"
' Ausgabedatei
Const strOutput = "C:\Ausgabe\liste.csv"
'Erweiterungen der Dateien die verarbeitet werden sollen
arrFileExtensions = Array("mp4","avi","mov","mpeg","mp2","mpg","mkv")
'--------------------------------------------------------
'Objekte erzuegen
Set fso = CreateObject("Scripting.Filesystemobject")
Set objShell = CreateObject("Shell.Application")
'Ausgabefile erzeugen
Set objOutputFile = fso.OpenTextFile(strOutput,2,True,-1)
'CSV-Überschriften erzeugen
objOutputFile.WriteLine """Dateipfad"";""Größe"";""Länge"";""Bitrate(Audio)"";""Bitrate(Video)"";""Dimension"";""Videotyp"""
'Filecounter initialisieren
intFileCounter = 0
'Funktion zum durchsuchen aufrufen inkl. Dateien in Unterordnern
'-------------------------------------------
parseFolder fso.GetFolder(strFolder), True
'-------------------------------------------
'Ausgabedatei schließen
objOutputFile.Close
'Abschlussmeldung anzeigen
WScript.Echo "Vorgang wurde abgeschlossen" & vbNewLine & "Es wurden " & intFileCounter & " Video-Dateien verarbeitet!"
Set objShell = Nothing
Set fso = Nothing
Function parseFolder(strFldr,boolRecursion)
For each file In strFldr.Files
'Dateierweiterung prüfen
For i = 0 To UBound(arrFileExtensions)
If LCase(arrFileExtensions(i)) = LCase(fso.GetExtensionName(file.Path)) Then
'Pfad der Datei
strFolderPath = file.ParentFolder
'Namespaceobjekt erzeugen
Set nsFolder = objShell.NameSpace(strFolderPath)
'Fileobjekt abfragen
Set f = nsFolder.ParseName(file.Name)
'Ausgabevariablen mit Werten füllen
strFilename = file.Path
strSize = nsFolder.GetDetailsOf(f,1)
strFilmLength = nsFolder.GetDetailsOf(f,27)
strBitrateAudio = nsFolder.GetDetailsOf(f,28)
strBitrateVideo = nsFolder.GetDetailsOf(f,282)
strVideoSize = nsFolder.GetDetailsOf(f,285) & "x" & nsFolder.GetDetailsOf(f,283)
strVideoType = nsFolder.GetDetailsOf(f,2)
'Daten in CSV schreiben
objOutputFile.WriteLine """" & strFilename & """;""" & strSize & """;""" & strFilmLength & """;""" & strBitrateAudio & """;""" & strBitrateVideo & """;""" & strVideoSize & """;""" & strVideoType & """"
intFileCounter = intFileCounter + 1
Exit For
End If
Next
Next
'Funktion rekursiv für alle Unterordner aufrufen
If boolRecursion Then
For Each subFolder in strFldr.SubFolders
parseFolder subFolder, True
Next
End If
End Function