Alle Dateien mit bestimmter Dateierweiterung ein einem Verzeichnis auf Existenz prüfen
Ich habe ein bereits fertiges lauffähiges Script ,daß ich nun nur noch etwas komfortabler gestalten will.
Ich wollte prüfen lassen
mit FileExists ob Dateien mit bestimmten Endungen in einem bestimmten Verzeichnis existieren (Namen sind nicht bekannt, ich will nur auf Endungen prüfen).
z.B
strOrdner = "d:\exceltemp"
in strordner könnten sich Excel Dateien mit der Endung .xls befinden. Die vollen Namen kenne ich nicht. Daher kann ich ja auch nicht mit FileExists auf ihre Existenz prüfen.
Wie prüfe ich dann nur auf Endungen ? Wildcards gehen nicht oder meine Syntax ist falsch.
Falls dies möglich ist, ist es dann auch möglich in einer schleife verschiedene Dateiendungen auf Existenz zu prüfen, also nicht nur .xls, sonder auch z.b, .doc , .txt , .mdb ,usw......
Vielleicht über ein Array ?
Vielen Dank für die Hilfe
Gruß
Claus
Ich wollte prüfen lassen
mit FileExists ob Dateien mit bestimmten Endungen in einem bestimmten Verzeichnis existieren (Namen sind nicht bekannt, ich will nur auf Endungen prüfen).
z.B
strOrdner = "d:\exceltemp"
in strordner könnten sich Excel Dateien mit der Endung .xls befinden. Die vollen Namen kenne ich nicht. Daher kann ich ja auch nicht mit FileExists auf ihre Existenz prüfen.
Wie prüfe ich dann nur auf Endungen ? Wildcards gehen nicht oder meine Syntax ist falsch.
Falls dies möglich ist, ist es dann auch möglich in einer schleife verschiedene Dateiendungen auf Existenz zu prüfen, also nicht nur .xls, sonder auch z.b, .doc , .txt , .mdb ,usw......
Vielleicht über ein Array ?
Vielen Dank für die Hilfe
Gruß
Claus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 70399
Url: https://administrator.de/contentid/70399
Ausgedruckt am: 17.11.2024 um 09:11 Uhr
13 Kommentare
Neuester Kommentar
... oder es einfach selbst umsetzen ...
Als Grundgerüst:
Grüße
bastla
Als Grundgerüst:
Set fso = CreateObject("Scripting.FileSystemObject")
strOrdner = "d:\exceltemp"
aTypen = Array("xls", "doc", "txt", "mdb")
For Each sTyp In aTypen
bIsDa = False
For Each oFile In fso.GetFolder(strOrdner).Files
If LCase(fso.GetExtensionName(oFile.Path)) = sTyp Then
bIsDa = True
Exit For
End If
Next
If bIsDa Then
WScript.Echo "Mindestens eine " & sTyp & "-Datei ist vorhanden."
Else
WScript.Echo "Es ist keine " & sTyp & "-Datei vorhanden."
End If
Next
Grüße
bastla
Hallo cbli!
Das etwas erweiterte Grundgerüst:
Grüße
bastla
P.S.: Die Möglichkeit, dass die Gesamtgröße der gefundenen Dateien eines Typs genau 1 Byte beträgt, habe ich vorsätzlich ignoriert ...
Das etwas erweiterte Grundgerüst:
Set fso = CreateObject("Scripting.FileSystemObject")
strOrdner = "d:\exceltemp"
aTypen = Array("xls", "doc", "txt", "mdb")
For Each sTyp In aTypen
iAnz = 0
lGr = 0
For Each oFile In fso.GetFolder(strOrdner).Files
If LCase(fso.GetExtensionName(oFile.Path)) = sTyp Then
iAnz = iAnz + 1
lGr = lGr + oFile.Size
End If
Next
Select Case iAnz
Case 0
WScript.Echo "Es wurde keine " & sTyp & "-Datei gefunden."
Case 1
WScript.Echo "Es wurde 1 " & sTyp & "-Datei mit einer Größe von " & FormatNumber(lGr, 0, , , True) & " Bytes gefunden."
Case Else
WScript.Echo "Es wurden " & CStr(iAnz) & " " & sTyp & "-Dateien mit insgesamt " & FormatNumber(lGr, 0, , , True) & " Bytes gefunden."
End Select
Next
Grüße
bastla
P.S.: Die Möglichkeit, dass die Gesamtgröße der gefundenen Dateien eines Typs genau 1 Byte beträgt, habe ich vorsätzlich ignoriert ...
Hallo cbli!
Unter der Voraussetzung, dass "oFile" die Quelldatei darstellt, könntest Du etwa so vorgehen:
Grüße
bastla
Unter der Voraussetzung, dass "oFile" die Quelldatei darstellt, könntest Du etwa so vorgehen:
If fso.FileExists(ZielOrdner & "\" & oFile.Name) Then
Set oOldFile = fso.GetFile(ZielOrdner & "\" & oFile.Name)
If oFile.Size >= oOldFile.Size Then
oOldFile.Delete
oFile.Move ZielOrdner
End If
Else
oFile.Move ZielOrdner
End If
Grüße
bastla
Hallo cbli!
Im Else-Zweig versuchst Du ja auch ein "oFile.Move zielordner", was angesichts der Tatsache, dass die Datei im Zielordner schon existiert, natürlich scheitert.
Was möchtest Du im Falle, dass die Quelldatei kleiner ist, eigentlich tun - diese löschen? Wenn ja, dann versuch es so:
Grüße
bastla
P.S.: Zum Schließen des < code>-Blocks musst Du ein < /code> verwenden ...
Im Else-Zweig versuchst Du ja auch ein "oFile.Move zielordner", was angesichts der Tatsache, dass die Datei im Zielordner schon existiert, natürlich scheitert.
Was möchtest Du im Falle, dass die Quelldatei kleiner ist, eigentlich tun - diese löschen? Wenn ja, dann versuch es so:
aTypen = Array("xls", "doc", "txt", "mdb")
moveordner = "D:\temp\" ' Hier findet die Verarbeitung statt
strOrdner = "D:\exceltemp\" ' Quell Verzeichnis
zielfolder = "D:\Lager\" ' Ziel Verzeichnis
' oFile = Dateien in strordner
' oFileZiel = Dateien in zielfolder (wenn sie bereits existieren sollten)
For Each sTyp In aTypen 'Dateitypen
For Each oFile In fso.GetFolder(moveordner).Files 'Quelldateien
If LCase(fso.GetExtensionName(oFile.Path)) = sTyp Then 'Typ
If fso.FileExists(zielfolder & "\" & oFile.Name) Then 'Zieldatei
Set oFileZiel = fso.GetFile(zielfolder & "\" & oFile.Name)
If oFile.Size >= oFileZiel.Size Then 'Dateigröße
msgbox "Quelldatei: " & ofile.name & " " & ofile.size & " ist größer / gleich" _
& vbnewline & "Zieldatei: " & ofileziel.name & " " & ofileziel.size ,64,"Hinweis"
oFileZiel.Delete
oFile.Move zielfolder
Else 'Quelldatei kleiner
msgbox "Quelldatei: " & ofile.name & " " & ofile.size & " ist kleiner" _
& vbnewline & "Zieldatei " & ofileziel.name & " " & ofileziel.size ,64,"Hinweis"
oFile.Delete 'Quelldatei löschen
End If 'Dateigröße
Else 'Zieldatei nicht vorhanden
oFile.Move zielfolder
End If 'Zieldatei
End If 'Typ
Next 'Quelldateien
Next 'Dateitypen
Grüße
bastla
P.S.: Zum Schließen des < code>-Blocks musst Du ein < /code> verwenden ...