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

Datenträger nach Filmen, MP3s, Bildern oder docx durchsuchen - Auflistung inkl. Filmlänge, Abmessungen, Interpret, Kamermodell, Autor etc.. in eine .csv speichern

Anleitung Entwicklung VB for Applications

Mitglied: Edi.Pfisterer

Edi.Pfisterer (Level 2) - Jetzt verbinden

02.04.2010, aktualisiert 18.10.2012, 10374 Aufrufe, 4 Kommentare

Um etwas Ordnung in die "Sicherungskopien" zu bringen, könnte folgender Codeschnipsel behiflich sein...

Aloha!
Nachdem sich doch mittlerweile etwas Chaos in meiner Filmsammlung breit gemacht hat und ich keine passende UND veränderbare Software gefunden habe, ist folgendes Tool entstanden...

Die Idee:
Mittels HTA als GUI und VBS ein Tool basteln, das einen beliebigen Datenträger nach einem bestimmten Datentyp (auf Grundlage der Standardanwendung, mit der der Dateityp geöffnet wird) durchsucht, einige erweiterte Dateieigenschaften sammelt und diese dann in eine csv schreiben

Die Umsetzung:
[edit: das Skript könnte auf einigen Vista oder 7 nicht laufen. Gegebenfalls wäre also die mstha.exe in Windows32 gegen eine ältere Version (am besten aus XP) tauschen...]

folgenden Code als myMovies.hta speichern (an beliebiger Stelle) - Start durch Doppelklick

01.
<head> 
02.
<meta name="author" content="urobe73_administrator.de"> 
03.
<meta name="generator" content="Ulli Meybohms HTML EDITOR"> 
04.
<title>Edis Dateiliste</title> 
05.
<HTA:APPLICATION 
06.
SCROLL="yes" 
07.
SINGLEINSTANCE="yes" 
08.
WINDOWSTATE="normal" 
09.
10.
</head> 
11.
<script language="VBScript"> 
12.
' Version 02_04_2010 - 12:00 
13.
 
14.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
15.
kopfzeile = 0 
16.
function meineVids(pfad,dateiname) 
17.
 
18.
        if kopfzeile = 0 then 
19.
        set logbuch1 =objFSO.opentextfile(dateiname, 2, true,0) 
20.
        logbuch1.write "Ordnername;Filmtitel;Filmlänge;Abmessungen" 
21.
        logbuch1.close 
22.
        kopfzeile = 1 
23.
        end if 
24.
 
25.
            If radiobutton(0).Checked Then 
26.
                showall = "ja" 
27.
            End If 
28.
            If radiobutton(1).Checked Then 
29.
                showall = "nein" 
30.
            End If 
31.
 
32.
        Set objFolder = objFSO.GetFolder(pfad) 
33.
        Set colSubfolders = objFolder.Subfolders 
34.
 
35.
        For Each objSubfolder in colSubfolders 
36.
        on Error resume next 
37.
                 ordnerzeichen = ordner_zeichen.value 
38.
                 vollername = objFSO.GetAbsolutePathName(objSubfolder) 
39.
 
40.
                 if showAll = "ja" then 
41.
                    ausgabe2 = left(vollername,ordnerzeichen) & punktaln(vollername,ordnerzeichen) & vbcrlf 
42.
                 end if 
43.
                 ausgabe1 = ausgabe2 & detail(vollername, showall) 
44.
 
45.
                set logbuch1 =objFSO.opentextfile(dateiname, 8, true,0)  ' 8 zum anfügen 
46.
                logbuch1.write ausgabe1 
47.
                logbuch1.close 
48.
                dateinameneu = dateiname 
49.
         call meineVids(vollername,dateinameneu) 
50.
        Next 
51.
 
52.
end function 
53.
 
54.
function punktaln(ordnername, anzeigezeichen) 
55.
        anzeigezeichen = anzeigezeichen+1   'damit er checkt, dass anzeigezeichen eine zahl ist... 
56.
        if len(ordnername) >=  anzeigezeichen then 
57.
        anzeige = "... " 
58.
        end if 
59.
        punktaln = anzeige 
60.
end function 
61.
 
62.
function Detail(ordnername, lang) 
63.
        dateitypen = split(Dateityp.value,";") 
64.
 
65.
        showAll = lang 
66.
            If urlbutton(0).Checked Then 
67.
                link = "ein" 
68.
            End If 
69.
            If urlbutton(1).Checked Then 
70.
                link = "aus" 
71.
            End If 
72.
        durchlauf = 1 
73.
 
74.
        Dim arrHeaders(34) 
75.
        Set objShell = CreateObject("Shell.Application") 
76.
        Set objFolder = objShell.Namespace(ordnername) 
77.
        For i = 0 to 33 
78.
            arrHeaders(i) = objFolder.GetDetailsOf(objFolder.Items, i) 
79.
        Next 
80.
        For Each strFileName in objFolder.Items 
81.
                ordnerzeichen = ordner_zeichen.value 
82.
                dateizeichen = datei_zeichen.value 
83.
 
84.
            for i = 0 to UBound(dateitypen) 
85.
                if instr(1, objFolder.GetDetailsOf(strFileName, 2), dateitypen(i), 1) >= 1 then 
86.
                nemmas = 1 
87.
                end if 
88.
            next 
89.
 
90.
             if nemmas = 1 then 
91.
                if durchlauf = 1 AND showAll <> "ja" then 
92.
                        feedback = feedback & vbcrlf & left(ordnername,ordnerzeichen) & punktaln(ordnername,ordnerzeichen) & vbcrlf 
93.
                        feedback_DVD = feedback 
94.
                        durchlauf = 2 
95.
                end if 
96.
                feedback = feedback & " ;" & left(objFolder.GetDetailsOf(strFileName, 0),dateizeichen) _ 
97.
                    & punktaln(objFolder.GetDetailsOf(strFileName, 0),dateizeichen) & "; " & objFolder.GetDetailsOf(strFileName, 21) _ 
98.
                    & ";(" & objFolder.GetDetailsOf(strFileName, 26) & ");" 
99.
 
100.
                    if link = "ein" then 
101.
                    feedback2 = Chr(34) & "=hyperlink(" & Chr(34)  & Chr(34)& ordnername & "\" & objFolder.GetDetailsOf(strFileName, 0) _ 
102.
                    & Chr(34)  & Chr(34) & ";"  & Chr(34)  & Chr(34) & "klick " &  Chr(34)  & Chr(34)& ")"  & Chr(34) 
103.
                    end if 
104.
 
105.
                    feedback = feedback & feedback2 & vbcrlf 
106.
                     if instr(1, objFolder.GetDetailsOf(strFileName, 0),"vob", 1)>=1 then feedback = feedback_DVD & "ist eine DVD" & vbcrlf 
107.
            end if 
108.
            nemmas = 0 
109.
        Next 
110.
        Detail = feedback 
111.
end function 
112.
 
113.
Sub Aufgabe1 
114.
 
115.
        woissndes = pfad.value 
116.
        dateiname = replace(woissndes,"\","_") 
117.
        dateiname = replace(dateiname,":","_") 
118.
        dateiname = dateiname & "_" & dateityp.value & ".csv" 
119.
 
120.
        call meineVids(woissndes,dateiname) 
121.
 
122.
        DataArea.InnerHTML = "<a href='" & dateiname & "'>Datei</a>  erfolgreich angelegt" 
123.
 
124.
End Sub 
125.
 
126.
</script> 
127.
 
128.
 
129.
<body bgcolor=#FAF8AF> 
130.
<font face=verdana> 
131.
Pfad: <input type="Text" name="pfad" value="G:\" size="" maxlength=""><br><br> 
132.
 
133.
 
134.
Was erscheint als Typ, wenn man den Mauszeiger über eine gesuchte Datei bewegt: <input type="Text" name="Dateityp" value="vlc;windows media" size="25" maxlength="20"> <br> 
135.
<font size = 1> 
136.
(es können auch mehrere Typen, durch <b>;</b> getrennt, angegeben werden!)<br> 
137.
Beispiele: Irfan;Windows Media;excel;word;winamp ... oder mit der Dateierweiterung (einzeln oder kombiniert): doc;zip;rar;xlsx;mp3;avi</font><br><br> 
138.
 
139.
 
140.
Die Anzeige der Ordner wird auf <input type="Text" name="ordner_zeichen" value="120" size="" maxlength=""> eingeschränkt!<br><br> 
141.
 
142.
Die Anzeige der Dateinamen wird auf <input type="Text" name="datei_zeichen" value="100" size="" maxlength=""> eingeschränkt!<br><br> 
143.
 
144.
Sollen auch Ordner angezeigt werden, die den gewünschten Dateityp NICHT enthalten? 
145.
Ja <input type="radio" name="radiobutton" value="0"> Nein <input type="radio" name="radiobutton" value="1" checked><br><br> 
146.
Sollen in der .csv-Datei Links zu den Dateien erscheinen? 
147.
Ja <input type="radio" name="urlbutton" value="0"> Nein <input type="radio" name="urlbutton" value="1" checked><br><br> 
148.
<br> 
149.
 
150.
 
151.
<input type="button" value="Datei anlegen" name="run_button" onClick="Aufgabe1"><br> 
152.
<font size = 1>(Die Verarbeitung kann mehrere Minuten dauern... Bitte um etwas Geduld)</font> 
153.
 
154.
<br><br><br> 
155.
<b> 
156.
<div id="dataarea"></div> 
157.
</b> 
158.
</font> 
159.
</body> 
160.
 
161.
 
Kurze Erklärung zur Verwendung bzw. Anpassung:

Durch klick auf den Button Datei anlegen wird das Laufwerk (bzw. der jeweilige Unterordner, den ihr gewählt habt) durchsucht und im Hintergrund die .csv-Datei angelegt;
Das Tool schließt den Such/Schreibvorgang mit der Meldung "Datei erfolgreich angelegt" ab. Dies kann - je nach Größe des Datenträgers bzw. Saft eures Systems mehrere Minuten in Anspruch nehmen...

Die csv-Datei wird in das Verzeichnis gespeichert, in dem die myMovies.hta liegt. Der Dateiname richtet sich nach folgendem Schema:

LW_Unterverzeichnis_dateityp1;dateityp2.csv


Das Tool lässt sich für jeden beliebigen Dateityp verwenden, in dem man im Windows Explorer den Mauszeiger über eine Datei des gewünschten Dateityps positioniert. Im Popup findet sich in der ersten Zeile der Eintrag TYP.
(Tipp: es genügt, im Eingabefeld Dateityp einige Zeichen des Typs einzutragen!)

Weiters besteht die Möglichkeit, mehrere Dateitypen in einer .csv zu erfassen, in dem man diese durch Semikolon (;) trennt
(Tipp: ohne Leerzeichen)

Zum Zwecke der besseren Übersichtlichkeit besteht die Möglichkeit, lange Ordnernamen bzw. Dateinamen auf eine selbst wählbare Zeichenanzahl abzukürzen (dies wird durch ... in der csv dargestellt)

Außerdem kann die Auflistung erweitert werden, in dem alle Ordner angezeigt werden (dh, auch jene, in denen der gesuchte Datentyp nicht vorhanden ist)

Die grafische Gestaltung des Tools lässt etwas zu wünschen übrig, aber meine ästhetischen Anforderungen sind nur in Bezug auf das andere Geschlecht erhöht...
(Tipp: die GUI ist rein in HTML verfasst und lässt sich beliebig verbessern... - verschlechtern ist wohl kaum mehr möglich

Falls andere als die von mir gewählten erweiterten Eigenschaften in die csv übertragen werden sollten, dann könnte folgende Liste behilflich sein.

Tipp, falls ihr mit VBS nicht so ganz per Du seid:
die Zahlen entsprechen dem Arrayindex in der Funktion Detail entsprechen...: (folgende Änderungen beziehen sich auf Zeile 97 im Code)
Beispiel 1: ihr ersetzt die Abmessung gegen das Kamermodell [24]
Beispiel 2: ihr erweitert den Code - hier wird der Interpret und den Titel des Albums ausgegeben - wenn es um mp3 gehen sollte...): [16] [17]
01.
Beispiel1: 
02.
& ";(" & objFolder.GetDetailsOf(strFileName, 24) & ");"  
03.
 
04.
Beispiel2: 
05.
 & ";(" & objFolder.GetDetailsOf(strFileName, 16) & ")" &   ";" & objFolder.GetDetailsOf(strFileName, 17) &  ";"
(ich verwende nur die Indexwerte 0,21 u 26)

0 Name: meinLieblingsfilm.avi
1 Größe: 91.000 KB
2 Typ: VLC media file (.avi)
3 Geändert am: 12.09.2009 19:39
4 Erstellt am: 12.09.2009 19:37
5 Letzter Zugriff am: 01.04.2010 21:18
6 Attribute: A
7 Status: Online
8 Besitzer: EDI\urobe
9 Autor:
10 Titel:
11 Thema:
12 Kategorie:
13 Seiten:
14 Kommentare:
15 Copyright:
16 Interpret:
17 Albumtitel:
18 Jahr:
19 Titelnummer:
20 Genre:
21 Dauer: 00:09:36
22 Bitrate:
23 Geschützt:
24 Kameramodell:
25 Bild aufgenommen am:
26 Abmessungen: 640 x 480
27 : 640 Pixel
28 : 480 Pixel
29 Folgenname:
30 Sendungsbeschreibung:
31 :
32 Abtastgröße:
33 Abtastrate:

Evtl. braucht ja jemand von Euch einmal dieses Tool oder kann darauf aufbauend etwas für seine mp3-Sammlung basteln (oder .docx oder whatever...).
(Außerdem kann ich es durch diese Anleitung selbst nicht mehr verlieren.... wäre leider nicht das erste Tool, das ich wiederholt mache, da ich es nicht mehr finde
Bei Fragen helfe ich gerne weiter...

lg
Edi
Mitglied: bastla
02.04.2010, aktualisiert 18.10.2012
Hallo Edi!

Da warst Du ja schon wieder fleißig ...

Nur als Anmerkung vorweg (getestet habe ich noch nicht): Wie hier schon mal von Biber zusammengestellt, gibt es offensichtlich je nach Windows-Version unterschiedliche Indizes für die "Extended File Attributes" ...

Grüße
bastla
Bitte warten ..
Mitglied: Edi.Pfisterer
02.04.2010 um 20:27 Uhr
Hallo Bastla!
Danke für den Hinweis!!!
Da ich hier noch auf XP unterwegs bin, funktioniert mein Code - ohne entsprechende Anpassungen der Indizes - auch nur dafür...

Du bist natürlich wieder herzlich eingeladen, das Ding zu verändern bzw. -bessern!!!!

btw: mir ist aufgefallen, dass das Tool manche Ordner auslässt, weil ihm irgendetwas an der Formatierung der Dateien nicht passt...
(Konnte dies anhand einer Datei, die ein russischer Kollege in seiner Heimatschrift benannte, feststellen...
Falls Du dafür eine Verbesserung hast (dh, es wird nur die Datei, nicht aber der ganze Folder ausgelassen), würde ich das schön finden.

Am schärfsten wäre natürlich eine Prüfung vorweg, welches OS installiert ist und anschliessend daran ein paar checkboxen, welche Infos in die csv geschrieben werden sollen....

Wünsche Dir frohes Osternestsuchen
lg
Edi
Bitte warten ..
Mitglied: Midivirus
08.04.2010 um 23:28 Uhr
top!

Teste das jetzt einfach mal und bei Fehler, gibs Meldungen....
Bitte warten ..
Mitglied: Edi.Pfisterer
09.04.2010 um 09:47 Uhr
Hallo Midivirus!
Wie verlief Dein Test? Verbesserungsvorschläge? Anmerkungen?
lg
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Windows Server
gelöst SQL-Server Datenbanksicherung inkl. Benutzerberechtigungen dafür? (4)

Frage von 1410640014 zum Thema Windows Server ...

Hyper-V
gelöst Hyper-V gleiche Datenträger-ID bzw. Volume-ID (10)

Frage von Bernd16 zum Thema Hyper-V ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (18)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...