templier
Goto Top

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 face-wink

Viele liebe Grüsse an alle
Ralph

Content-ID: 250128

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

Ausgedruckt am: 22.11.2024 um 04:11 Uhr

colinardo
colinardo 25.09.2014 aktualisiert um 11:07:11 Uhr
Goto Top
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 face-wink

Checke mal ob es deinen Anforderungen genügt.

Grüße Uwe
templier
templier 25.09.2014 um 11:22:42 Uhr
Goto Top
Hi Uwe,

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 face-sad

Viele liebe Grüsse
Ralph
colinardo
colinardo 25.09.2014 aktualisiert um 11:47:11 Uhr
Goto Top
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 face-sad
da habe ich auch noch was auf Lager, muss mal kramen face-smile Die Codecinfo ist aber IMHO out of the Box mit VBS nicht möglich, da müsste man ein Zusatztool bemühen.
templier
templier 25.09.2014 aktualisiert um 11:52:02 Uhr
Goto Top
Das wäre cool Uwe und ich wäre Dir dafür sehr verbunden face-smile

Beste Grüsse aus der Schweiz
Ralph


Tante Edith: Wie gesagt, die Codec-Infos wären schön, müssen aber nicht unbedingt dabei sein.
colinardo
Lösung colinardo 25.09.2014, aktualisiert am 30.09.2014 um 12:22:30 Uhr
Goto Top
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.
'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
Grüße Uwe
templier
templier 25.09.2014 um 17:46:53 Uhr
Goto Top
WOW Uwe!

Genau das, was der Kunde wünschte!

Ich danke Dir und ich hoffe, das ich Dir auch mal einen "Stein in den Garten" werfen darf!

Viele liebe Grüsse
Ralph