Prüfen, ob Dateien in einem Ordner sind

Heuriger

Lt. Commander
Dabei seit
Juli 2007
Beiträge
1.201
Ahoi.

Kann ich prüfen (evtl. mit einer Batchdatei o.ä.), ob sich in einem Ordner Dateien befinden?
Diesen könnte ich dann über "Geplante Tasks" ja laufen lassen.


Wenn eine Datei in diesem Ordner ist, soll ein Fenster erscheinen.
"Es befindet sich eine/mehrere neue Datei/en im Ordner Beispiel."

Software möchte ich nicht extra dazu installieren.

Betriebssystem: Win XP Pro

PS: Es handelt sich immer um .tif-Dateien, die sind oft auch versteckt bzw. sie haben keinen Namen!

Gruß
 

cyrano

Lt. Junior Grade
Dabei seit
Dez. 2006
Beiträge
505
Hi,

per Batch könntest du das mit "If Exist" und "If Not Exist" abfragen. Allerdings wird das dann schwer mit deiner Messagebox.
Leichter wird das ganze per VBs bzw WSH.

Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.getfolder("C:\Users\Test\Desktop\Test\")
For Each File in Folder.Files
If fso.GetExtensionName(File)="tif"Then
MsgBox "Es befindet sich eine/mehrere neue Datei/en im Ordner Beispiel."
Found=vbTrue
End If
Next
If Found<>vbTrue Then MsgBox "Ordner ist leer"
Den Code einfach in eine Textdatei kopieren , diese abspeichern und ihr die Endung .vbs verpassen.
 
Zuletzt bearbeitet:

BerniG

Lieutenant
Dabei seit
Okt. 2004
Beiträge
620
Ich glaube der Code macht ne Messagebox bei jeder Datei auf (also bei 20 Dateien im Ordner kommen 20 Boxen) und er will ja wohl nur, dass die 1x kommt wenn irgendwas im Ordner ist. Man müsste diesen MsgBox-Befehl als else bei "If Found<>vbTrue" setzen oder (besser weil amn nicht unnötig die Schleife durchgeht) die Schleife gleich abbrechen sobald man was gefunden hat (weiß jetzt nicht wie das in VBS geht, normalerweise "break" oder so).

Edit: Ist wohl "Exit for" in vbs. Also müsste es so gehen
Code:
Dim fso, folder, Found
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.getfolder("C:\Users\Test\Desktop\Test\")
Found = 0
For Each File in Folder.Files
   If fso.GetExtensionName(File)="tif"Then
      Found = Found + 1
      If Found > 1 Then Exit for
   End If
Next
If Found < 1 Then 
   MsgBox "Ordner ist leer"
Else
   If Found < 2 Then
      MsgBox "Es befindet sich eine neue Datei im Ordner Beispiel."
   Else
      MsgBox "Es befinden sich mehrere neue Dateien im Ordner Beispiel."
   End If
End If
 
Zuletzt bearbeitet:

Heuriger

Lt. Commander
Ersteller dieses Themas
Dabei seit
Juli 2007
Beiträge
1.201
Das sieht sehr gut aus.

"MsgBox "Ordner ist leer" habe ich gelöscht, da ich ja nur erinnert werden möchte, wenn wirklich Dateien da sind.

Soll man das "If Found < 1 Then" leer lassen oder muss da noch am besten ein "stop" rein?

Bis hierhin vielen vielen Dank!

Gruß
 

cyrano

Lt. Junior Grade
Dabei seit
Dez. 2006
Beiträge
505
@Bernig:
Stimmt , du hast recht :D Bei mehr als einer Datei wird es nervig zu klicken :) Das habe ich gar nicht bedacht.

@ Heuriger:
Du kannst das Found <1 leer lassen. Ob es Programmiertechnisch so 100%ig richtig ist , lass ich mal so im Raum stehen. In der Praxis hatte ich aber bei solchen Gebilden bisher keine Probleme.
 

Heuriger

Lt. Commander
Ersteller dieses Themas
Dabei seit
Juli 2007
Beiträge
1.201
Programmiertechnisch muss es nicht 100%ig richtig sein, es muss nur in der Praxis laufen und nicht in einer Endlosschleife oder sowas geraten.

Danke!
 

cyrano

Lt. Junior Grade
Dabei seit
Dez. 2006
Beiträge
505
Tut es nicht. Das kannst du auch daran kontrollieren das der Prozess "wscript.exe" läuft bzw nicht läuft.
 

Heuriger

Lt. Commander
Ersteller dieses Themas
Dabei seit
Juli 2007
Beiträge
1.201
2 dumme ein Gedanke.
Das habe ich als erstes getestet und es läuft alles richtig.

Merci
 
Zuletzt bearbeitet:
Top