Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

VB Script gesucht um Videodateien auslesen zu können.

Frage Entwicklung

Mitglied: templier

templier (Level 1) - Jetzt verbinden

25.09.2014 um 11:03 Uhr, 2551 Aufrufe, 7 Kommentare, 3 Danke

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

Mitglied: colinardo
25.09.2014, aktualisiert um 11:07 Uhr
Hallo Ralph,
ich hatte mal eine Powershell-Funktion geschrieben das die erweiterten Dateieigenschaften auslesen kann:
http://www.administrator.de/wissen/erweiterte-dateieigenschaften-mit-po ...
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
Bitte warten ..
Mitglied: templier
25.09.2014 um 11:22 Uhr
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

Viele liebe Grüsse
Ralph
Bitte warten ..
Mitglied: colinardo
25.09.2014, aktualisiert um 11:47 Uhr
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.
Bitte warten ..
Mitglied: templier
25.09.2014, aktualisiert um 11:52 Uhr
Das wäre cool Uwe und ich wäre Dir dafür sehr verbunden

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.
Bitte warten ..
Mitglied: colinardo
LÖSUNG 25.09.2014, aktualisiert 30.09.2014
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.
01.
'Ordner mit den Dateien 
02.
Const strFolder = "C:\Videos" 
03.
' Ausgabedatei 
04.
Const strOutput = "C:\Ausgabe\liste.csv" 
05.
'Erweiterungen der Dateien die verarbeitet werden sollen 
06.
arrFileExtensions = Array("mp4","avi","mov","mpeg","mp2","mpg","mkv") 
07.
'-------------------------------------------------------- 
08.
'Objekte erzuegen 
09.
Set fso = CreateObject("Scripting.Filesystemobject") 
10.
Set objShell = CreateObject("Shell.Application") 
11.
'Ausgabefile erzeugen 
12.
Set objOutputFile = fso.OpenTextFile(strOutput,2,True,-1) 
13.
'CSV-Überschriften erzeugen 
14.
objOutputFile.WriteLine """Dateipfad"";""Größe"";""Länge"";""Bitrate(Audio)"";""Bitrate(Video)"";""Dimension"";""Videotyp""" 
15.
'Filecounter initialisieren 
16.
intFileCounter = 0 
17.
'Funktion zum durchsuchen aufrufen inkl. Dateien in Unterordnern 
18.
'------------------------------------------- 
19.
parseFolder fso.GetFolder(strFolder), True 
20.
'------------------------------------------- 
21.
'Ausgabedatei schließen 
22.
objOutputFile.Close 
23.
'Abschlussmeldung anzeigen 
24.
WScript.Echo "Vorgang wurde abgeschlossen" & vbNewLine & "Es wurden " & intFileCounter & " Video-Dateien verarbeitet!" 
25.
Set objShell = Nothing 
26.
Set fso = Nothing 
27.
 
28.
Function parseFolder(strFldr,boolRecursion) 
29.
	For each file In strFldr.Files 
30.
		'Dateierweiterung prüfen 
31.
		For i = 0 To UBound(arrFileExtensions) 
32.
			If LCase(arrFileExtensions(i)) = LCase(fso.GetExtensionName(file.Path)) Then 
33.
				'Pfad der Datei 
34.
				strFolderPath = file.ParentFolder 
35.
				'Namespaceobjekt erzeugen 
36.
				Set nsFolder = objShell.NameSpace(strFolderPath) 
37.
				'Fileobjekt abfragen 
38.
				Set f = nsFolder.ParseName(file.Name) 
39.
				'Ausgabevariablen mit Werten füllen 
40.
				strFilename = file.Path 
41.
				strSize = nsFolder.GetDetailsOf(f,1) 
42.
				strFilmLength = nsFolder.GetDetailsOf(f,27) 
43.
				strBitrateAudio = nsFolder.GetDetailsOf(f,28) 
44.
				strBitrateVideo = nsFolder.GetDetailsOf(f,282) 
45.
				strVideoSize = nsFolder.GetDetailsOf(f,285) & "x" & nsFolder.GetDetailsOf(f,283) 
46.
				strVideoType = nsFolder.GetDetailsOf(f,2) 
47.
				'Daten in CSV schreiben 
48.
				objOutputFile.WriteLine """" & strFilename & """;""" & strSize & """;""" & strFilmLength & """;""" & strBitrateAudio & """;""" & strBitrateVideo & """;""" & strVideoSize & """;""" & strVideoType & """" 
49.
				intFileCounter = intFileCounter + 1 
50.
				Exit For 
51.
			End If 
52.
		Next 
53.
	Next 
54.
	'Funktion rekursiv für alle Unterordner aufrufen 
55.
	If boolRecursion Then 
56.
		For Each subFolder in strFldr.SubFolders 
57.
			parseFolder subFolder, True 
58.
		Next 
59.
	End If 
60.
End Function 
61.
 
Grüße Uwe
Bitte warten ..
Mitglied: templier
25.09.2014 um 17:46 Uhr
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
Bitte warten ..
Mitglied: Unfassbar
10.03.2016 um 14:33 Uhr
Zunächst danke für diesen schönen Ansatz!

Ich möchte diesen Code verwenden um eine paar Eigenschaften von Bilddateien im Ordner aufzulisten, daher habe ich dein Code wie folgt eingebaut:

01.
Sub Dateieigenschaften_auflisten() 
02.
03.
' Dateieigenschaften_auflisten Makro 
04.
05.
'Ordner mit den Dateien 
06.
Const strFolder = "C:\Users\Public\Pictures\Sample Pictures" 
07.
' Ausgabedatei 
08.
Const strOutput = "C:\Users\Public\Pictures\Sample Pictures\liste.csv" 
09.
'Erweiterungen der Dateien die verarbeitet werden sollen 
10.
arrFileExtensions = Array("bmp", "jpg", "jpeg", "gif", "tif", "tiff", "png") 
11.
'-------------------------------------------------------- 
12.
'Objekte erzuegen 
13.
Set fso = CreateObject("Scripting.Filesystemobject") 
14.
Set objShell = CreateObject("Shell.Application") 
15.
'Ausgabefile erzeugen 
16.
Set objOutputFile = fso.OpenTextFile(strOutput, 2, True, -1) 
17.
'CSV-Überschriften erzeugen 
18.
objOutputFile.WriteLine """Dateipfad"";""Größe""" 
19.
'Filecounter initialisieren 
20.
intFileCounter = 0 
21.
'Funktion zum durchsuchen aufrufen inkl. Dateien in Unterordnern 
22.
'------------------------------------------- 
23.
parseFolder fso.GetFolder(strFolder), True 
24.
'------------------------------------------- 
25.
'Ausgabedatei schließen 
26.
objOutputFile.Close 
27.
'Abschlussmeldung anzeigen 
28.
WScript.Echo "Vorgang wurde abgeschlossen" & vbNewLine & "Es wurden " & intFileCounter & " Video-Dateien verarbeitet!" 
29.
Set objShell = Nothing 
30.
Set fso = Nothing 
31.
End Sub 
32.
 
33.
Function parseFolder(strFldr, boolRecursion) 
34.
    For Each file In strFldr.Files 
35.
        'Dateierweiterung prüfen 
36.
        For i = 0 To UBound(arrFileExtensions) 
37.
            If LCase(arrFileExtensions(i)) = LCase(fso.GetExtensionName(file.Path)) Then 
38.
                'Pfad der Datei 
39.
                strFolderPath = file.ParentFolder 
40.
                'Namespaceobjekt erzeugen 
41.
                Set nsFolder = objShell.Namespace(strFolderPath) 
42.
                'Fileobjekt abfragen 
43.
                Set f = nsFolder.ParseName(file.Name) 
44.
                'Ausgabevariablen mit Werten füllen 
45.
                strFilename = file.Path 
46.
                strSize = nsFolder.GetDetailsOf(f, 1) 
47.
                'Daten in CSV schreiben 
48.
                objOutputFile.WriteLine """" & strFilename & """;""" & strSize & """" 
49.
                intFileCounter = intFileCounter + 1 
50.
                Exit For 
51.
            End If 
52.
        Next 
53.
    Next 
54.
    'Funktion rekursiv für alle Unterordner aufrufen 
55.
    If boolRecursion Then 
56.
        For Each subFolder In strFldr.SubFolders 
57.
            parseFolder subFolder, True 
58.
        Next 
59.
    End If 
60.
End Function
Allerdings wird mir nun der Laufzeitfehler 13 "Typen unverträglich" bei Zeile 36 angezeigt. Wo liegt denn nun da das Problem?

Vielen Dank im Voraus!
Bitte warten ..
Ähnliche Inhalte
VB for Applications
gelöst VB-Script per Aufgabenplanung (2)

Frage von S4kar97 zum Thema VB for Applications ...

Netzwerkgrundlagen
gelöst PsExec Script zum auslesen der PC Seriennummer (7)

Frage von krx-adm zum Thema Netzwerkgrundlagen ...

Batch & Shell
Script zum Auflösen einer Ordnerstruktur und zurück gesucht (12)

Frage von websolutions zum Thema Batch & Shell ...

Batch & Shell
gelöst SID per Script auslesen und als Variable einlesen (9)

Frage von tzabbi55 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Erkennung und -Abwehr

Infineon TPMs unsicher! Bitlocker ggf. angreifbar

(2)

Information von Lochkartenstanzer zum Thema Erkennung und -Abwehr ...

Firewall

PfSense Repository für Version 2.3.x

(4)

Information von Dobby zum Thema Firewall ...

LAN, WAN, Wireless

WPA-2 hat erste Risse: KRACK

(8)

Information von the-buccaneer zum Thema LAN, WAN, Wireless ...

Hardware

GPD Pocket: Winziger Laptop für Wenig Tipper

(1)

Information von pelzfrucht zum Thema Hardware ...

Heiß diskutierte Inhalte
Microsoft Office
ICH BIN AM ENDE MEINES IT-WISSENS ANGELANGT!!!! (37)

Frage von 134537 zum Thema Microsoft Office ...

Windows Server
gelöst Gruppenrichtlinie greift nicht zu! (23)

Frage von Syosse zum Thema Windows Server ...

Hosting & Housing
Mailserver Software Empfehlungen (21)

Frage von sunics zum Thema Hosting & Housing ...