goodbytes
Goto Top

VBS - Do While Schleife - zusätzliche Bedingung

Hallo,
in einem Ordner sollen alle jpg- und pdf-Datein durchlaufen werden, umbenannt und verschoben werden.
Das funktioniert auch tadellos, allerdings hatte sich in der Praxis schon ab und zu mal eine "fremde" Datei dahin verirrt (manchmal einfach auch nur eine "Thumbs.db"), und damit wird Files.count niemals 0. Innerhalb der Schleife verarbeite ich aber nur jpg und pdf. Löschen möchte ich aber eine "verirrte" Datei auch nicht einfach so. Wie kann ich also prüfen, ob sich keine jpg- oder pdf-Datei mehr darin befindet? Es gibt doch bestimmt eine elegantere Lösung als innerhalb der Schleife prüfen ob es sich nicht um einen der beiden Dateitypen handelt und dann in einen Schrott-Ordner verschieben?

Do While objFSO.GetFolder("D:\").Files.count <> 0  
   [Verarbeiten und Verschieben von jpg- bzw. pdf-Datei]
Loop

Vielen Dank im Voraus!
Torsten

Content-Key: 285119

Url: https://administrator.de/contentid/285119

Printed on: April 18, 2024 at 05:04 o'clock

Mitglied: 122990
122990 Oct 09, 2015 updated at 13:11:28 (UTC)
Goto Top
Ach ... da gibts hier so viel schöne Skripte dazu im Forum, ohne das man dazu eine ineffiziente Ressourcen fressende Dauerschleife nutzen müsste. Dafür gibts heute doch so schöne Monitoring-Funktionen (WMI/Filesystemwatcher) des Betriebssystems ...
VBA - VBS : Umbennen und Verschieben von Dateien in Loop
Suche eine Batch,Tool oder Programm zum umbenennen von Dateien

Gruß grexit
Member: beidermachtvongreyscull
beidermachtvongreyscull Oct 09, 2015 updated at 13:09:15 (UTC)
Goto Top
Kannst Du mal den kompletten Code der Schleife posten?
Oder Du bedienst Dich an Kollege grexits Vorschlägen.
Member: emeriks
emeriks Oct 09, 2015 at 13:57:57 (UTC)
Goto Top
Hi,
Dim c
c = objFSO.GetFolder("D:\").Files.count  
Do While c > 0
   [Verarbeiten und Verschieben von jpg- bzw. pdf-Datei]
  c = c - 1  'egal, ob die Datei gelöscht wurde oder nicht  
Loop


E.
Member: goodbytes
goodbytes Oct 09, 2015 updated at 14:09:29 (UTC)
Goto Top
Ach, ich hab die blöde Do While ... Loop über Board geworfen und eine For Each ... Next genommen. Damit müsste jetzt Ruhe sein...

Set objFSO = CreateObject("Scripting.FileSystemObject")  

For Each file In objFSO.GetFolder("D:\Test").files  
	If Right(file.Name,4) = ".jpg" or Right(file.Name,4) = ".pdf" Then  
		[Verarbeiten und Verschieben von jpg- bzw. pdf-Datei] 
	End If
Next

Vielen Dank aber für eure Hilfe !!! face-smile

LG Torsten
Member: emeriks
emeriks Oct 09, 2015 at 14:11:53 (UTC)
Goto Top
Ja, das geht auch. Wobei Du dann aber die Collection während des Durchlaufens veränderst. Das kann zu Abbrüchen führen, wenn Du an der vorletzen Datei bist, diese löschst und er beim "Next" auf die nächste springen will. Das geht dann ins Leere, weil die nächste "dann eine Zeile nach oben gerutscht" ist.