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-ID: 285119

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

Ausgedruckt am: 22.11.2024 um 04:11 Uhr

122990
122990 09.10.2015 aktualisiert um 15:11:28 Uhr
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
beidermachtvongreyscull
beidermachtvongreyscull 09.10.2015 aktualisiert um 15:09:15 Uhr
Goto Top
Kannst Du mal den kompletten Code der Schleife posten?
Oder Du bedienst Dich an Kollege grexits Vorschlägen.
emeriks
emeriks 09.10.2015 um 15:57:57 Uhr
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.
goodbytes
goodbytes 09.10.2015 aktualisiert um 16:09:29 Uhr
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
emeriks
emeriks 09.10.2015 um 16:11:53 Uhr
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.