Zwei Ordner durchsuchen

Mitglied: lionne

lionne (Level 1) - Jetzt verbinden

12.10.2011 um 09:50 Uhr, 2891 Aufrufe, 18 Kommentare

wie kann ich mit vbs zwei Ordnern durchsuchen? Ich habe die Ordner "D:\test\" und "E:\Beispiele\", die ich per vbs durchsuchen möchte um zu prüfen, ob eine pdf Datei erhalten ist. Ich kann es für einen Ordner machen.

Für zwei habe als Idee noch ein Sub zu schreiben, aber das ist nicht schön.

Hat Jemand eine Idee, wie ich es in eine Routine für beide Ordner hin bekomme?

Danke im Voraus
Lionne
Mitglied: bastla
12.10.2011 um 10:41 Uhr
Hallo lionne!

Die Suche muss für jeden Ordner einzeln erfolgen - ob als "Sub" (oder "Function" - noch hast Du den Sinn der Aktion nicht beschrieben sorry, nicht genau genug gelesen :-( face-sad) oder als Schleife über ein "Array()" von Suchzielen bleibt letztlich Dir überlassen ...

Grüße
bastla
Bitte warten ..
Mitglied: colinardo
12.10.2011 um 10:50 Uhr
Hier eine Möglichkeit:
Bitte warten ..
Mitglied: lionne
12.10.2011 um 16:02 Uhr
Hallo bastla,

danke für deine Antwort. Wenn ich das Skript ausführe, bekomme ich folgende Fehlermeldung:
"Object required 'fldr' ". Obwohl ich 'fldr' als als Dim declariert habe.

Danke
Lionne
Bitte warten ..
Mitglied: colinardo
12.10.2011 um 16:26 Uhr
'fldr' wird nur innerhalb der Function verwendet. Sie braucht nicht deklariert werden.
Wahrscheinlich hast du bei der Angabe der Ordner einen Fehler eingebaut. Wenn die GetFolder Methode fehlschlägt ist 'fldr' leer und die Function schlägt fehl.
Hoffe du hast das Script nicht nur einfach kopiert und ausgeführt. Du musst es natürlich an deine Gegebenheiten anpassen. Variable "F1" und "F2" sind die Ordner in denen du suchst und "suchObjekt" der Name der PDF Datei.
Bitte warten ..
Mitglied: lionne
12.10.2011 um 16:49 Uhr
Hallo Softmeister,

natürlich habe ich das Skript angepasst. Aber ich bekomme immer die Fehlermeldung: "Object required 'fldr" an der Stelle
Bitte warten ..
Mitglied: bastla
12.10.2011 um 16:54 Uhr
Hallo lionne!

Wäre es dann nicht sinnvoll, Deine aktuelle Version des Scripts zu posten?

Grüße
bastla
Bitte warten ..
Mitglied: colinardo
12.10.2011 um 17:12 Uhr
Das Script funktioniert so, da muss der Fehler in einer deiner Anpassungen stecken , bitte poste das ganze Script...
Bitte warten ..
Mitglied: lionne
12.10.2011 um 17:14 Uhr
Hallo bastla,

mein code

Gruß
Lionne

Bitte warten ..
Mitglied: Biber
12.10.2011 um 22:26 Uhr
Na ja, lionne,

VBS-Schnipsel sind ja nicht gerade mein Fachgebiet, aber ganz so robust erscheint mir dein Entwurf ja nicht.

a) Als parseFolder -Function wie im ersten Entwurf von Softmeister liesse sich ja ein True/Fals-Returnwert auswerten.
Als Sub parseFolder wird das schwierig

b) Ein "fldr.GetExtensionName(file.Name))" geht in die Grütze, weil GetExtensionName() eine Methode des FileSystemObjects ist.
Aber keine des Folder-Objects.

c) ein Vergleich "file.DateCreated" mit "currentDate" (WTF??), aber auch mit "Date" geht daneben, weil file.DateCreated Datum und Zeit beinhaltet. Also quasi "tt.mm.jjjj hh:mm:ss" plus Kroppzeug.
"Date" dagegen nur "tt.mm.jjjj"

Also etwas robuster als Vorschlag:
proof of concept
Grüße
Biber
Bitte warten ..
Mitglied: lionne
13.10.2011 um 12:13 Uhr
Hallo zusammen,

danke für die Zahlreiche Antwort. So habe ich jetzt das Programm gebastelt und es funktioniert.

Mein Ziel ist jetzt nur eine for-Schleife zu benutzen und die Ordner als Parameter zu übergeben.

Kann Jemand helfen?

Danke und Gruß
Lionne


Bitte warten ..
Mitglied: colinardo
13.10.2011 um 12:25 Uhr
Das hatte ich doch schon ganz zu Anfang mit der parseFolder "Function" demonstriert...
denke dein Problem sollte hiermit einen Abschluss finden:
Bitte warten ..
Mitglied: lionne
13.10.2011 um 13:15 Uhr
Danke es funktioniert sehr gut.

Aber sobald, ich die Funktion in ein Programm einfüge, wo es 5 andere Sub gibt, bekomme ich die Fehlermeldung: "object required 'fso'".

Woran kann es liegen?

Danke
Lionne
Bitte warten ..
Mitglied: colinardo
13.10.2011 um 13:26 Uhr
Der obere Teil bis einschl. sucheDateiInOrdner gehört nicht in ein Sub sondern direkt in die VBS-Datei. Die Meldung kommt deswegen weil set fso=... global deklariert werden muss sonst findet die Funktion das Objekt fso nicht. Du kannst das Objekt fso aber auch nur in der Funktion deklarieren wenn du es nur dort benötigst, dann kommt der Fehler nicht.
Ein wenig Grundlagen VBS Lektüre wäre angesagt ...
Bitte warten ..
Mitglied: lionne
13.10.2011 um 13:46 Uhr
Zitat von @colinardo:

Ein wenig Grundlagen VBS Lektüre wäre angesagt ...

Hallo Softmeister,

du hast recht. Ich suche immer noch ein gutes Buch, mit kleine Aufgaben und viele Beispiele. Wenn du eins kennst, gibt mir bitte den Name.

Ich habe vorher viel mit SQL gemacht, und jetzt bekomme ich immer mehr Programmierung Aufgaben.

Danke nochmal für deine Zahlreiche Antwort

Gruß
Lionne
Bitte warten ..
Mitglied: colinardo
13.10.2011 um 13:54 Uhr
Auf die schnelle ist das eine gute Übersicht der Sprachelemente mit Beispielen : http://www.asphelper.de/aspkurs/A300102.asp
Und hier eine Referenz: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id ...
Bitte warten ..
Mitglied: lionne
13.10.2011 um 15:32 Uhr
Hallo Softmeister,

Danke ich werde die Seite speichern.

noch eine Frage:
Wenn es im Ordner 16 Pdf Dateien gibt, die die Bedingung if ( (datevalue(left( filePdf.DateCreated , 10)) < currentDate) erfüllen(siehe Zeile 19), dann bekomme ich von Sub „listErstellen“(siehe Zeile 21) soviel Meldungen wie die Anzahl der pdf Dateien.

Wie kann ich Steuern, dass diese nur einmal gesendet wird?

Gruß
Lionne
Bitte warten ..
Mitglied: colinardo
13.10.2011 um 15:44 Uhr
Du musst schon wissen bei welchem PDF du eine Sub-Prozedur aufrufen willst. Wenn du bei der ersten gefundenen Datei reagieren willst und die anderen ignorierst kannst du die FOR-Schleife mit Exit For oder Exit Function hinter "listErstellen" verlassen.
Bitte warten ..
Mitglied: lionne
13.10.2011 um 16:35 Uhr
Vielen Dank, es funktioniert.

Gruß
Lionne
Bitte warten ..
Heiß diskutierte Inhalte
HTML
Ich brauche dringend Hilfe !
gelöst JulianpustVor 18 StundenFrageHTML16 Kommentare

Hallo erstmal, ich habe großen Mist gebaut in der Firma wo ich gerade mal 2 Tage arbeite. Was ist passiert: Ich sollte von Gmail ...

Exchange Server
0-day Exploit Chain für Exchange Server - Patches verfügbar
kgbornVor 2 TagenInformationExchange Server6 Kommentare

Zur Info: Microsoft warnt vor einer Exploit-Chain, bei der vier 0-day-Schwachstellen für gezielte Angriffe auf Exchange per Outlook Web App kombiniert werden (eine chines. ...

Windows 10
Windows 10 schickt lokale Anfragen an das Gateway - was tun?
gelöst runthegaunzVor 1 TagFrageWindows 1015 Kommentare

Hallo! Ich bin vor ein paar Tagen wieder von Linux auf Windows umgestiegen. Ich hab die Windows 10 Version 20H2 installiert, wurde von Windows ...

Switche und Hubs
23 Cisco Switch einrichten - Wie am einfachsten?
gelöst Freak-On-SiliconVor 1 TagFrageSwitche und Hubs18 Kommentare

Hallo; Ich habe hier 4stk Cisco SX350X-24 9Stk Cisco SG350X-48P 10Stk Cisco SG350X-48 Diese werden aufgeteilt auf 9 Racks, und ersetzen alte HP Switches. ...

Exchange Server
Aktuelle Exchange Sicherheitslücke
jojo0411Vor 1 TagAllgemeinExchange Server11 Kommentare

Hallo Leute, Momentan gibt es da wieder einmal ein schönes neues Thema. Sehe ich das richtig das ich mit Exchange 2016 und CU 19 ...

Windows Server
Windows Firewall: Alle öffentliche IPs sperren bis auf eine
SabSchapVor 1 TagFrageWindows Server7 Kommentare

Hallo, wir haben einen Windows 2019 Server. Wir nutzen diesen als Webserver. Nun haben wir die Webadresse www.test.de und möchten diese für alle öffentlichen ...

Hardware
Fritzbox 7590 ändert selbständig die FTP-Adresse nach ca. 24h
Wicky1Vor 1 TagFrageHardware15 Kommentare

Hallöchen, ich habe da ein sehr kurioses Problemchen mit meiner Fritzbox. Doch erst mal eine kurze Beschreibung des Aufbaus: - Fritzbox 7590 (1&1 Edition) ...

Netzwerke
Smarthome Heimnetzwerk absichern
hell.wienVor 1 TagFrageNetzwerke12 Kommentare

Hallo. Ich mach mir gerade gedanken wie ich meine neue Wohnung sicher mache Überischthalber zur Hardware: Vorhanden: Modem APU4D4 Cisco SG250X-24P Mikrotik cAP ac ...