Top-Themen

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

Zwei Ordner durchsuchen

Frage Entwicklung VB for Applications

Mitglied: lionne

lionne (Level 1) - Jetzt verbinden

12.10.2011 um 09:50 Uhr, 2639 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 ) 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:
01.
set objFS = Wscript.CreateObject("Scripting.FileSystemObject") 
02.
set f1 = objFS.GetFolder("c:\temp\f1") 
03.
set f2 = objFS.GetFolder("c:\temp\f2") 
04.
suchObjekt = "NachdiesemPDFsucheich.pdf" 
05.
if parseFolder(f1) = true or parseFolder(f2) = true then 
06.
	wscript.Echo "Found" 
07.
else 
08.
	wscript.Echo "Not Found" 
09.
end if 
10.
 
11.
Function parseFolder(fldr) 
12.
	dim found 
13.
	For each file in fldr.Files 
14.
		if file.name = suchObjekt then 
15.
			parseFolder = true 
16.
			exit function 
17.
		end if	 
18.
	Next 
19.
	 
20.
	For Each subFolder in fldr.SubFolders 
21.
		if parseFolder(subFolder) = true then 
22.
			parseFolder = true 
23.
			exit function 
24.
		end if 
25.
	Next 
26.
	 
27.
End Function
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
01.
 For each file in fldr.Files 
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

01.
    Dim targetType 
02.
 
03.
set objFS = Wscript.CreateObject("Scripting.FileSystemObject") 
04.
set f1 = objFS.GetFolder("E:\test1") 
05.
set f2 = objFS.GetFolder("D:\PdfFile") 
06.
 
07.
targetType = "pdf" 
08.
if parseFolder(f1) = true or parseFolder(f2) = true then 
09.
	wscript.Echo "Found" 
10.
else 
11.
	wscript.Echo "Not Found" 
12.
end if 
13.
 
14.
Sub parseFolder(fldr) 
15.
	dim found 
16.
	For each file in fldr.Files 
17.
		 
18.
		If LCase(fldr.GetExtensionName(file.Name)) = LCase(targetType) Then 
19.
			if file.DateCreated = currentDate then 
20.
				'parseFolder = true 
21.
				WScript.echo file.DateCreated 
22.
				'send a message 
23.
			End if 
24.
			 
25.
		End if	 
26.
	Next 
27.
	 
28.
	 
29.
End sub
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:
01.
' F:\schnipsel\parsefolders.vbs 
02.
Dim objFS, f1, f2 
03.
 
04.
set objFS = Wscript.CreateObject("Scripting.FileSystemObject") 
05.
set f1 = objFS.GetFolder("D:\temp") 
06.
set f2 = objFS.GetFolder("f:\schnipsel") 
07.
 
08.
targetType = "vbs" 
09.
if (parseFolder(f1) or parseFolder(f2) ) then 
10.
	wscript.Echo "Found" 
11.
else 
12.
	wscript.Echo "Not Found" 
13.
end if 
14.
 
15.
Function  parseFolder(fldr) 
16.
	parsefolder = false 
17.
	For each file in fldr.Files 
18.
		If LCase(objFS.GetExtensionName(file.Name)) = LCase(targetType) Then 
19.
			if DateDiff("d",file.DateCreated, Date) = 0 then 
20.
				parseFolder = true 
21.
				WScript.echo fldr.name , ":" ,file.name , file.DateCreated 
22.
				'send a message 
23.
				Exit Function 
24.
			End if 
25.
			 
26.
		End if	 
27.
	Next 
28.
	 
29.
	 
30.
End Function
proof of concept
>f:\schnipsel\parsefolders.vbs 
schnipsel : parsefolders.vbs 12.10.2011 22:20:05 
Found
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


01.
 
02.
Sub parseFolder() 
03.
 
04.
    Dim f1, f2, targetType, fso, filePdf, currentDate 
05.
 
06.
    Set fso     = CreateObject("Scripting.FileSystemObject") 
07.
    f1       = "D:\test1"  
08.
	f2      = "E:\Customer NOV\PdfFile" 
09.
     
10.
	targetType = "pdf" 
11.
 
12.
	 
13.
		currentDate = Date() 
14.
		 
15.
		'Ordner1 
16.
		For Each filePdf In fso.GetFolder(f1).Files 		  
17.
			If LCase(fso.GetExtensionName(filePdf.Name)) = LCase(targetType) Then 
18.
			 
19.
				If ( filePdf.DateCreated < currentDate ) Then					 
20.
					WScript.echo filePdf.Name & " " & filePdf.DateCreated 
21.
					listeErstellen 'subaufruf 
22.
				End If		 
23.
			End If 
24.
		Next 
25.
	    
26.
		 
27.
		'Ordner1 
28.
		For Each filePdf In fso.GetFolder(f2).Files  
29.
		  
30.
			If LCase(fso.GetExtensionName(filePdf.Name)) = LCase(targetType) Then 'Test Datei-Typ 
31.
				 
32.
				If ( filePdf.DateCreated < currentDate ) Then					 
33.
					WScript.echo filePdf.Name & " " & filePdf.DateCreated 
34.
					listeErstellen 'subaufruf 
35.
				End If 
36.
			End If 
37.
		Next 
38.
	 
39.
end Sub 
40.
 
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:
01.
 
02.
    Dim f1, f2, targetType, fso, filePdf, currentDate 
03.
 
04.
    Set fso     = CreateObject("Scripting.FileSystemObject") 
05.
    f1       = "D:\test1"  
06.
	f2      = "E:\Customer NOV\PdfFile" 
07.
     
08.
	targetType = "pdf" 
09.
	currentDate = Date() 
10.
	sucheDateiInOrdner(f1) 
11.
	sucheDateiInOrdner(f2) 
12.
	 
13.
 
14.
 
15.
Function sucheDateiInOrdner(ordner) 
16.
	For Each filePdf In fso.GetFolder(ordner).Files 		  
17.
			If LCase(fso.GetExtensionName(filePdf.Name)) = LCase(targetType) Then 
18.
			 
19.
				If ( filePdf.DateCreated < currentDate ) Then					 
20.
					WScript.echo filePdf.Name & " " & filePdf.DateCreated 
21.
					listeErstellen 'subaufruf 
22.
				End If		 
23.
			End If 
24.
		Next 
25.
End Function
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 ..
Ähnliche Inhalte
Batch & Shell
Durchsuchen von Unterverzeichnissen nach bestimmten Ordnern!
gelöst Frage von DeadseraphimBatch & Shell4 Kommentare

Hallo in die Runde, ich habe folgendes Problem: Im Verzeichnis: D:\Schriftverkehr befinden sich mehrere Unterverzeichnisse mit den Bezeichnungen: \Dokumentenklassen1\ ...

Windows 7
Verknüpften Ordner durchsuchen?
gelöst Frage von fuxxigWindows 73 Kommentare

Hallo zusammen, ich glaube, ich stehe grade auf dem schlauch folgende situation: in einem netzlaufwerk wurde ein ordner angelegt. ...

Batch & Shell
Ordner durchsuchen und Dateien kopieren
gelöst Frage von friedensbringerBatch & Shell4 Kommentare

Hallo zusammen, gibt es mittels Batchfile eine Möglichkeit in einem definierten Ordner inklusive allen Unterordnern (mehrere Ebenen möglich) nach ...

VB for Applications
Ordner + Unterordner durchsuchen
gelöst Frage von Gimli3311VB for Applications11 Kommentare

Guten Tag Zusammen, da bei meinem letzten Problem hier super geholfen wurde, wende ich mich wieder an euch. Was ...

Neue Wissensbeiträge
Erkennung und -Abwehr

Sicherheitslücke Spectre und Meltdown: Status prüfen

Anleitung von Frank vor 4 StundenErkennung und -Abwehr1 Kommentar

Nach all den Updates der letzten Woche sollte man unbedingt auch den Status prüfen, ob die Sicherheitslücke Spectre und ...

Microsoft Office

Office 2010 Starter erneut auf einer frischen Windows-Version installieren

Tipp von Lochkartenstanzer vor 1 TagMicrosoft Office9 Kommentare

Moin, vor ein paar Tagen schlug bei mir ein Kunde auf, der sein Widnows 7 geschrottet und es inklusive ...

Datenbanken

Upgrade MongoDB 3.4 auf 3.6

Erfahrungsbericht von Frank vor 1 TagDatenbanken

Seit kurzem gibt es das 3.6 Update für die MongoDB: Sicherheit, das Sortieren, Aggregation und auch die Performance wurde ...

SAN, NAS, DAS

Backdoor Zugang und Upload-Bug in vielen Western Digital MyCloud Geräten

Information von Frank vor 1 TagSAN, NAS, DAS2 Kommentare

James Bercegay von der Firma Gulftech hat die Fehler an Western Digital gemeldet und das Unternehmen stellt bereits ein ...

Heiß diskutierte Inhalte
Netzwerke
NTFS-Berechtigung
Frage von Daoudi1973Netzwerke23 Kommentare

Hallo zusammen und frohes neues Jahr (Sorry, ich bin spät dran) Meine Frage: 1- Ich habe einen Ordner im ...

Drucker und Scanner
Gesucht DIN A3 Drucker
Frage von NebellichtDrucker und Scanner15 Kommentare

Hallo, ich möchte einen neuen DIN A3 Drucker kaufen. Um ab und zu, ca. 1 mal die Woche Farbausdrucke ...

iOS
Einladung vom iphone kalender
Frage von jensgebkeniOS15 Kommentare

Hallo Gemeinschaft, folgendes Problem - immer wenn ich von meinem Iphone einen Termin einztrage und diesem Termin Teilnehmer zuweise, ...

Windows Netzwerk
Drucker isolieren in Windows Domäne
gelöst Frage von lcer00Windows Netzwerk14 Kommentare

Hallo zusammen, habe eine Windows-AD (2012R2) in der es einen Druckerserver gibt. Mittlerweile verliere ich das Vertrauen in die ...