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

Mitglied: lionne

lionne (Level 1) - Jetzt verbinden

12.10.2011 um 09:50 Uhr, 2670 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. ...

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 ...

Batch & Shell

Ordnerstruktur durchsuchen und abgleichen ob ein Ordner vorhanden ist

gelöst Frage von Manzge90Batch & Shell13 Kommentare

Hallo Zusammen, ich bin in neu Anfänger in der Batch Programmierung und wollte Fragen ob es möglich ist per ...

Neue Wissensbeiträge
Sonstige Systeme
Es war einmal ein BeOS - Wer erinnert sich noch?
Information von BassFishFox vor 1 TagSonstige Systeme5 Kommentare

Hallo, Bin gerade ueber Haiku gestolpert, von dessen Existenz als "Nachfolger des BeOS" ich wusste nur mich nie wirklich ...

Datenschutz

Microsoft und DSGVO - ob das wohl jemals klappt (Probleme beim Datenabfluss für Office Pro Plus)?

Tipp von VGem-e vor 1 TagDatenschutz3 Kommentare

Servus Kollegen, siehe Aber wer setzt schon MS Office Pro Plus ein? Wie dann der Stand beim "normalen" MS ...

Windows 10

Macht Windows 10.1809 Probleme mit gemappten Netzlaufwerken (betrifft wohl insbes. AMD-Hardware und Trend Micro AV-Produkte)?

Tipp von VGem-e vor 1 TagWindows 103 Kommentare

Moin Kollegen, grad dazu gefunden und Hatten wir dies nicht bei früheren W10-Upgrades ebenfalls? Da bleibt nur, das Upgrade ...

Humor (lol)

Das neue Miniatur Wunderland OFFICIAL VIDEO - worlds largest model railway - railroad

Information von StefanKittel vor 2 TagenHumor (lol)2 Kommentare

Hallo, wer noch nie im Miniatur Wunderland war, sollte es dringend mal nachholen. Es gibt eine neues Video. Viele ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Gäste-WLAN durch DD-WRT AP nach einem MikroTik Routerboard
Frage von NukolarLAN, WAN, Wireless16 Kommentare

Hallo, wie der Titel schon sagt möchte ich gerne ein Gäste-WLAN innerhalb eines bestehenden LANs einrichten. Dass die Gäste ...

DSL, VDSL
DSL Monitoring Tool - Quick and dirty?
Frage von george44DSL, VDSL15 Kommentare

Liebe Gemeinde, ich suche ein einfaches und vor allem schnell zu installierendes Monitoring-Tool zur kontinuierlichen Dokumentation (nur) der Internetanbindung. ...

Exchange Server
Outlook findet Postfach nicht
Frage von MaximaxExchange Server11 Kommentare

Hallo, und zwar haben wir auf der Arbeit ein kleines (großes) Exchange 2016 Problem. Exchange meldete gestern, dass die ...

Informationsdienste
Probleme auf dem Server
Frage von LangeLangeInformationsdienste9 Kommentare

Hallo zusammen, ich betreibe die Seite Keine Werbelinks. In der Analyse stellen wir fest, dass die Ladezeit in der ...