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 Alle Dateien mit bestimmter Dateierweiterung ein einem Verzeichnis auf Existenz prüfen

Mitglied: cbli

cbli (Level 1) - Jetzt verbinden

08.10.2007, aktualisiert 18.10.2012, 12560 Aufrufe, 13 Kommentare

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
Mitglied: bastla
08.10.2007 um 17:03 Uhr
Hallo cbli!

Kannst Du kurz erklären, was genau Du mit dieser Prüfung vorhast bzw in welcher Form Du deren Ergebnisse benötigst?

Grüße
bastla
Bitte warten ..
Mitglied: bastla
08.10.2007 um 17:23 Uhr
... oder es einfach selbst umsetzen ...

Als Grundgerüst:
01.
Set fso = CreateObject("Scripting.FileSystemObject")
02.
strOrdner = "d:\exceltemp"
03.
aTypen = Array("xls", "doc", "txt", "mdb")
04.
For Each sTyp In aTypen
05.
	bIsDa = False
06.
	For Each oFile In fso.GetFolder(strOrdner).Files
07.
		If LCase(fso.GetExtensionName(oFile.Path)) = sTyp Then
08.
			bIsDa = True
09.
			Exit For
10.
		End If
11.
	Next
12.
	If bIsDa Then
13.
		WScript.Echo "Mindestens eine " & sTyp & "-Datei ist vorhanden."
14.
	Else
15.
		WScript.Echo "Es ist keine " & sTyp & "-Datei vorhanden."	
16.
	End If
17.
Next
Grüße
bastla
Bitte warten ..
Mitglied: cbli
08.10.2007 um 17:29 Uhr
Hallo cbli!

Kannst Du kurz erklären, was genau Du
mit dieser Prüfung vorhast bzw in
welcher Form Du deren Ergebnisse
benötigst?


Wie ich schon schrieb, nur prüfen ob diese Dateien mit einer Dateiendung (z.B xls) in dem bestimmten Verzeichnis existieren und entprechend eine msgbox oder txtdatei ausgeben mit dem Resultat. Ist nicht zwingend notwendig für mein Script,es läuft auch ohne so wie es soll.
Alles nur Komfort Dinge.
Eventuell interessant wären:

1. Auf Existenz mehrerer verschiedener Dateiendungen auf einmal prüfen

2. Eine Kombination von Punkt 1 mit Abfrage der Dateigröße und damit verbundener
unterschiedlicher Weiterverarbeitung

3. Das Zählen der gefunden Dateien und Ausgabe in txdatei oder msgbox

Punkt 1 + 2 sind eher für zukünftige Scripte gedacht,aber es wäre natürlich auch jetzt schon gut zu wissen wies geht.
Punkt 3 könnte ich für mein jetztiges Script schon verwenden,ist aber auch nicht notwendig.

Hier mal ein Ansatz von mir der nicht funktioniert hat:


sFilename = strOrdner & strExtension
strExtension = ".xls"
Set FSO = CreateObject("Scripting.FileSystemObject")
If FSO.FileExists(strOrdner & strExtension) = False Then
msgbox "Nichts da"
End If

If FSO.FileExists(strOrdner & strExtension) = true Then
msgbox sFilename
end if

Vielen Dank für die Hilfe

Gruß
Claus
Bitte warten ..
Mitglied: bastla
08.10.2007 um 19:14 Uhr
Hallo cbli!

Das etwas erweiterte Grundgerüst:
01.
Set fso = CreateObject("Scripting.FileSystemObject")
02.
strOrdner = "d:\exceltemp"
03.
aTypen = Array("xls", "doc", "txt", "mdb")
04.

05.
For Each sTyp In aTypen
06.
	iAnz = 0
07.
	lGr = 0
08.

09.
	For Each oFile In fso.GetFolder(strOrdner).Files
10.
		If LCase(fso.GetExtensionName(oFile.Path)) = sTyp Then
11.
			iAnz = iAnz + 1
12.
			lGr = lGr + oFile.Size
13.
		End If
14.
	Next
15.

16.
	Select Case iAnz
17.
	Case 0
18.
		WScript.Echo "Es wurde keine " & sTyp & "-Datei gefunden."	
19.
	Case 1
20.
		WScript.Echo "Es wurde 1 " & sTyp & "-Datei mit einer Größe von " & FormatNumber(lGr, 0, , , True) & " Bytes gefunden."
21.
	Case Else
22.
		WScript.Echo "Es wurden " & CStr(iAnz) & " " & sTyp & "-Dateien mit insgesamt " & FormatNumber(lGr, 0, , , True) & " Bytes gefunden."
23.
	End Select
24.

25.
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 ...
Bitte warten ..
Mitglied: cbli
10.10.2007 um 16:32 Uhr
... oder es einfach selbst umsetzen ...

Als Grundgerüst:
01.
Set fso =
02.
> CreateObject("Scripting.FileSystemObject")
03.
> strOrdner = "d:\exceltemp"
04.
> aTypen = Array("xls",
05.
> "doc", "txt",
06.
> "mdb")
07.
> For Each sTyp In aTypen
08.
> 	bIsDa = False
09.
> 	For Each oFile In
10.
> fso.GetFolder(strOrdner).Files
11.
> 		If LCase(fso.GetExtensionName(oFile.Path))
12.
> = sTyp Then
13.
> 			bIsDa = True
14.
> 			Exit For
15.
> 		End If
16.
> 	Next
17.
> 	If bIsDa Then
18.
> 		WScript.Echo "Mindestens eine "
19.
> & sTyp & "-Datei ist
20.
> vorhanden."
21.
> 	Else
22.
> 		WScript.Echo "Es ist keine "
23.
> & sTyp & "-Datei
24.
> vorhanden."	
25.
> 	End If
26.
> Next
27.
> 

Vielen Dank, funktioniert sehr gut.
Noch eine letzte Frage die nach dem Probelauf aufgekommen ist:

Im weiteren Verlauf meines Scripts werden die gefundenen Excel Dateien in ein anderes
Verzeichnis verschoben. Dies funktioniert auch ,nur eben nicht wenn die Dateien im Zielverzeichnis schon existieren. Überschreiben tut er nicht.
Wie kann ich dem Script mitteilen bei dem Move Befehl ein Überschreiben auszuführen,besser noch zu überschreiben wenn die Dateien gleich groß oder größer sind ?
Habe versucht diesen Part noch in die Schleife einzubauen,mein Ansatz hat aber nicht funktioniert.

if oFile.Size(moveordner) >= oFile.Size(zielordner) then

Wie geht das ?

Vielen Dank

Gruß
Claus
Bitte warten ..
Mitglied: bastla
10.10.2007 um 17:19 Uhr
Hallo cbli!

Unter der Voraussetzung, dass "oFile" die Quelldatei darstellt, könntest Du etwa so vorgehen:
01.
If fso.FileExists(ZielOrdner & "\" & oFile.Name) Then
02.
	Set oOldFile = fso.GetFile(ZielOrdner & "\" & oFile.Name)
03.
	If oFile.Size >= oOldFile.Size Then
04.
		oOldFile.Delete
05.
		oFile.Move ZielOrdner
06.
	End If
07.
Else
08.
	oFile.Move ZielOrdner
09.
End If
10.
Grüße
bastla
Bitte warten ..
Mitglied: cbli
10.10.2007 um 18:08 Uhr
Hallo cbli!

Kannst Du kurz erklären, was genau Du
mit dieser Prüfung vorhast bzw in
welcher Form Du deren Ergebnisse
benötigst?

Grüße
bastla

Ich habe ein Script (dank deiner Hilfe) geschrieben,daß unteranderem in einem temp Ordner (d:\exceltemp) nach Dateien mit bestimmten Dateiendungen (eine oder auch mehrere) sucht.
Diese dann auf die Größe prüft und sie im weiteren Verlauf des Scripts irgendwann in einen anderen Ordner verschiebt. Das Prüfen auf Existenz von Dateien mit bestimmten Dateiendungen (eine oder auch mehrere) im Ordner war nur eine reine Komfortsache und habe ich inzwischen erfolgreich ins Script integriert.
Wie gesagt irgendwann werden die gefundenen Dateien verschoben und es kann vorkommen,daß ich vergesse vorher die Dateien vom letzten Mal im Zielordner zu löschen.
Einen automatisches Überschreiben scheint es ja nicht zu geben bei VBS.
Natürlich könnte ich vorher den Zielordner per Script leeren lassen,aber dort können sich noch Dateien befinden ,die ich behalten will.
Deshalb wollte ich die Dateien in d:\exceltemp mit denen im Zielordner vergleichen lassen im Hinblick auf die Größe der Dateien.
DateLastModified hilft mir in diesem Fall nicht im Hinblick auf den Inhalt der Dateien. Also nur die Größe vergleichen und wenn sie gleich groß oder größer sind,dann verschieben ansonsten
msgbox "bla bla bla".
Da auto überschreiben nicht geht,wollte ich eben,wenn größere oder gleich große Dateien gefunden wurden,diese vorher im Zielverzeichnis löschen lassen.

Hier mein Ansatz

01.

02.
Set folderZiel= fso.GetFolder("D:\Zielordner\")
03.
Set oFileZiel = folderziel.Files
04.
strOrdner = "d:\exceltemp\"
05.

06.

07.
aTypen = Array("xls", "doc")
08.
For Each sTyp In aTypen
09.
   bIsDa = False
10.
    For Each oFile In fso.GetFolder(strOrdner).Files
11.
        If LCase(fso.GetExtensionName(oFile.Path)) = sTyp then
12.
           bIsDa = True
13.
           if oFile.Size >= oFileZiel.Size(fso.GetFolder(oFileZiel.Path)) then
14.
          wshshell.popup "Eine Datei mit der Erweiterung       " & sTyp & "       wird verschoben" _
15.
           & vbnewline & vbnewline & "Dateiname:        "  & oFile.name ,1, "Hinweis"
16.
wshshell.popup "Die Datei:    " & oFile.name & " hat die Größe:   " & oFile.Size & "   <MB" ,2,"Hinweis"
17.
         oFile.Delete "D:\Zielordner"
18.
         oFile.Move "D:\Zielordner\"
19.
          'if oFile.name
20.
       end if
21.
      End If
22.
    Next
23.
Next
Bitte warten ..
Mitglied: bastla
10.10.2007 um 19:52 Uhr
Hallo cbli!

Nimm Dir einmal etwas Zeit, die Postings in diesem Thread in chronologischer Reihenfolge zu lesen - Du hast gerade auf eine Frage von vorgestern geantwortet ...

Grüße
bastla
Bitte warten ..
Mitglied: cbli
10.10.2007 um 22:36 Uhr
Hallo cbli!

Nimm Dir einmal etwas Zeit, die Postings in
diesem Thread in chronologischer Reihenfolge
zu lesen - Du hast gerade auf eine Frage von
vorgestern geantwortet ...

Grüße
bastla

Oops, mein Fehler. Tut mir leid.
Könnte ein Admin meinen Beitrag an die richtige Stelle verschieben und diesen hier löschen ?

Danke schon mal.

Gruß
Claus
Bitte warten ..
Mitglied: bastla
10.10.2007, aktualisiert 18.10.2012
... und sieh Dir vielleicht auch diesen Beitrag (noch) einmal an ...

Grüße
bastla
Bitte warten ..
Mitglied: cbli
12.10.2007, aktualisiert 18.10.2012
... und sieh Dir vielleicht auch
[https://www.administrator.de/forum/alle-dateien-mit-bestimmter-dateierweiterung-ein-einem-verzeichnis-auf-existenz-pr%c3%bcfen-70399.html#comment-275290
diesen] Beitrag (noch) einmal an ...

Grüße
bastla

So, habe nun Stunden damit zugebracht mein Script zu ändern und zu testen.
Im Grunde funktioniert es, aber nur wenn ich das Script nicht nach der Abfrage (fso.FileExists(zielfolder & "\" & oFile.Name)
in die else Schleife lasse.
Wo ist mein Fehler ?

<code>

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
bIsDa = False
For Each oFile In fso.GetFolder(moveordner).Files
If LCase(fso.GetExtensionName(oFile.Path)) = sTyp then
bIsDa = True
If fso.FileExists(zielfolder & "\" & oFile.Name) Then
Set oFileZiel = fso.GetFile(zielfolder & "\" & oFile.Name)
If oFile.Size >= oFileZiel.Size Then

msgbox "Quelldatei: " & ofile.name & " " & ofile.size & " ist größer / gleich" _
& vbnewline & "Zieldatei: " & ofileziel.name & " " & ofileziel.size ,64,"Hinweis"
oFileZiel.Delete
oFile.Move zielfolder
End If
else
msgbox "Quelldatei: " & ofile.name & " " & ofile.size & " ist kleiner" _
& vbnewline & "Zieldatei " & ofileziel.name & " " & ofileziel.size ,64,"Hinweis"

oFile.Move zielfolder
oFile.Delete
'End If
end if
end if
next
next

<code>

Vielen Dank nochmal für die Geduld

Gruß
Claus
Bitte warten ..
Mitglied: bastla
12.10.2007 um 13:46 Uhr
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:
01.
aTypen = Array("xls", "doc", "txt", "mdb")
02.

03.
moveordner = "D:\temp\" ' Hier findet die Verarbeitung statt
04.
strOrdner = "D:\exceltemp\" ' Quell Verzeichnis
05.
zielfolder = "D:\Lager\" ' Ziel Verzeichnis
06.
' oFile = Dateien in strordner
07.
' oFileZiel = Dateien in zielfolder (wenn sie bereits existieren sollten)
08.

09.
For Each sTyp In aTypen 'Dateitypen
10.
	For Each oFile In fso.GetFolder(moveordner).Files 'Quelldateien
11.
		If LCase(fso.GetExtensionName(oFile.Path)) = sTyp Then 'Typ
12.
			If fso.FileExists(zielfolder & "\" & oFile.Name) Then 'Zieldatei
13.
				Set oFileZiel = fso.GetFile(zielfolder & "\" & oFile.Name)
14.
				If oFile.Size >= oFileZiel.Size Then 'Dateigröße
15.
					msgbox "Quelldatei: " & ofile.name & " " & ofile.size & " ist größer / gleich" _
16.
						& vbnewline & "Zieldatei: " & ofileziel.name & " " & ofileziel.size ,64,"Hinweis"
17.
					oFileZiel.Delete
18.
					oFile.Move zielfolder
19.
				Else 'Quelldatei kleiner
20.
					msgbox "Quelldatei: " & ofile.name & " " & ofile.size & " ist kleiner" _
21.
						& vbnewline & "Zieldatei " & ofileziel.name & " " & ofileziel.size ,64,"Hinweis"
22.

23.
					oFile.Delete 'Quelldatei löschen
24.
				End If 'Dateigröße
25.
			Else 'Zieldatei nicht vorhanden
26.
				oFile.Move zielfolder
27.
			End If 'Zieldatei
28.
		End If 'Typ
29.
	Next 'Quelldateien
30.
Next 'Dateitypen
Grüße
bastla

P.S.: Zum Schließen des < code>-Blocks musst Du ein < /code> verwenden ...
Bitte warten ..
Mitglied: cbli
15.10.2007 um 13:12 Uhr
P.S.: Zum Schließen des <
code>-Blocks musst Du ein < /code>
verwenden ...



Hallo Bastla

Danke für den Hinweis und deine Hilfe.

Dieser Beitrag kann jetzt auf gelöst gesetzt werden.

mfg
Claus
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Datei aus Verzeichnis auslesen?
gelöst Frage von freshman2017Batch & Shell4 Kommentare

Hallo Ihr! Ich wollte mir gerade mit nachfolgendem Batch Befehl: alle darin befindlichen Bilder auflisten. Ausgabe: Wie kann ich ...

Batch & Shell

Batch datei eine bestimmt Datei mit einer bestimmten software öffnen

gelöst Frage von Daoudi1973Batch & Shell3 Kommentare

Hallo zusammen, wir haben in der Arbeit Acrbat Reader als Standard Software um PDF-Dateien zu öffnen. meine Frage: wie ...

Microsoft Office

Word bestimmt Sprache selbst

gelöst Frage von honeybeeMicrosoft Office1 Kommentar

Hallo, habe in Word 2016 ein nerviges Problem: Auf meinem Computer (Windows 10) sind zwei Sprachen installiert: Deutsch und ...

Batch & Shell

Sobald PDF-Datei im Verzeichnis PDF-Datei ausdrucken

Frage von SwisterBatch & Shell14 Kommentare

Hallo, Ich habe ein kleines Programm geschrieben, dass mir sobald eine PDF-Datei im Verzeichnis vorhanden ist diese ausdruckt und ...

Neue Wissensbeiträge
Internet
Copyright-Reform: Upload-Filter
Information von Frank vor 22 StundenInternet

Hallo, viele Menschen reden aktuell von Upload-Filtern. Sie reden darüber, als wären es eine Selbstverständlichkeit, das Upload-Filter die Seitenbetreiber ...

Google Android

Blokada: Tracking und Werbung unter Android unterbinden

Information von AnkhMorpork vor 1 TagGoogle Android1 Kommentar

In Ergänzung zu meinem vorherigen Beitrag: Blokada efficiently blocks ads, tracking and malware. It saves your data plan, makes ...

Google Android
Facebooks unsichtbare Datensammlung
Information von AnkhMorpork vor 1 TagGoogle Android1 Kommentar

Rund 30 Prozent aller Apps im Play-Store nehmen Kontakt zu Facebook auf, sobald man sie startet. So erfährt der ...

Exchange Server

Exchange 2010 bis 2019 Sicherheitslücke durch CU RU schließen

Information von sabines vor 1 TagExchange Server

Für die hier: und hier: besprochene Sicherheitslücke ist ein Patch für Microsoft Exchange Server 2010 - 2019 verfügbar. RU ...

Heiß diskutierte Inhalte
Windows 10
Windows Update funktioniert nicht - Keine Verbindung mit dem Updatedienst
gelöst Frage von anveWindows 1030 Kommentare

Hallo, ich kann schon länger keine Updates mehr machen. Wenn ich auf Update suchen gehe, dann schreibt er folgendes: ...

LAN, WAN, Wireless
NETBEUI unter Windows 10
Frage von certifiedit.netLAN, WAN, Wireless26 Kommentare

Guten Abend, wir stehen gerade vor dem Rästel, warum man in einer Industriemaschine (wert gut 6-stellig, paar mal vorhanden) ...

Hardware
Was passiert wenn ein Server zu heiß wird?
Frage von LohrakHardware21 Kommentare

Hallo Sollte ein Server zu heiß werden, da z.B ein Lüfter ausfällt, was würde passieren? Wie meldet sich der ...

Internet
EU-Gremien einigen sich auf die schärfste Form von Upload-Filter und Leistungsschutzrecht
Information von FrankInternet19 Kommentare

Nun ist es . Die Verlage, die in der Vergangenheit das Internet verschlafen hatten und kurz vor ihrer Auflösung ...