Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 2095 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Outlook & Mail
gelöst Email Anhänge speichern VB Script aber nur bestimmte Dateitypen (Outlook) (4)

Frage von LindeUnimog zum Thema Outlook & Mail ...

VB for Applications
gelöst VB Script rekursiv statt nur ein Ordner (4)

Frage von Saschaaaaa zum Thema VB for Applications ...

VB for Applications
gelöst VB Script nach gefundenem Wort die nächsten 4 Zeichen ersetzten (2)

Frage von deutsch73 zum Thema VB for Applications ...

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

Frage von websolutions zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...