VBScript - Ordner auf Inhalt prüfen?
Mit einem VBScript prüfen, ob in einem Ordner Dateien vorhanden sind?
Hallo Leute!
Wie bereits in meinem Beitrag Dateien verschieben mit VBScript beschrieben, habe ich ein Skript gebastelt, dass mir alle Dateien verschiebt bzw. kopiert.
Nun habe ich festgestellt, dass es zu einer Fehlermeldung kommt, wenn im Ordner keine Dateien vorhanden sind.
Ich wollte also eine Abfrage einbaun, die prüft, ob in diesem Ordner Dateien vorhanden sind und wenn ja, dann sollten diese verschoben werden. Wenn nein, soll einfach nix gemacht werden.
Füre ich das Skript aus, passiert einfach gar nichts. Es wird also nichts verschoben, selbst wenn Dateien vorhanden sind.
Hat jemand einen Rat, wie man am besten eine solche Abfrage programmiert?
Hier die ganze Verschiebe-Funktion:
Hallo Leute!
Wie bereits in meinem Beitrag Dateien verschieben mit VBScript beschrieben, habe ich ein Skript gebastelt, dass mir alle Dateien verschiebt bzw. kopiert.
Nun habe ich festgestellt, dass es zu einer Fehlermeldung kommt, wenn im Ordner keine Dateien vorhanden sind.
Ich wollte also eine Abfrage einbaun, die prüft, ob in diesem Ordner Dateien vorhanden sind und wenn ja, dann sollten diese verschoben werden. Wenn nein, soll einfach nix gemacht werden.
Füre ich das Skript aus, passiert einfach gar nichts. Es wird also nichts verschoben, selbst wenn Dateien vorhanden sind.
Hat jemand einen Rat, wie man am besten eine solche Abfrage programmiert?
Hier die ganze Verschiebe-Funktion:
Function Move(Quellpfad, Zielpfad)
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Quelle = FSO.GetFolder(Quellpfad)
Set Ziel = FSO.GetFolder(Zielpfad)
If FSO.FileExists(Quellepfad & "\*.*") then
FSO.MoveFile Quellpfad & "\*.*", Zielpfad & "\"
Else
End if
End Function
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 135525
Url: https://administrator.de/contentid/135525
Ausgedruckt am: 29.11.2024 um 16:11 Uhr
18 Kommentare
Neuester Kommentar
Hallo Imrazor!
FileExists funktioniert nicht mit Wildcards, nur mit expliziten Dateipfaden.
Mach es über eine Each-Schleife:
Wenn keine Datei, dann keine Aktion
Wenn eine oder mehrere Dateien, dann alle Datei verschieben
Mindestens 1 Datei, Befehl ausführen und Schleife beenden
Gruß Dieter
FileExists funktioniert nicht mit Wildcards, nur mit expliziten Dateipfaden.
Mach es über eine Each-Schleife:
Wenn keine Datei, dann keine Aktion
Wenn eine oder mehrere Dateien, dann alle Datei verschieben
Mindestens 1 Datei, Befehl ausführen und Schleife beenden
For Each File in Quelle.Files
FSO.MoveFile Quellpfad & "\*.*", Zielpfad & "\": Exit For
Next
Gruß Dieter
If FSO.FileExists(Quellepfad & "\*.*") then
Eine Möglichkeit, die auch im Script-Center von Microsoft steht, ist, auf die Ordnergröße zu prüfen.
Das Ordner-Objekt Quelle hast du ja schon erzeugt, dann kann man es auch direkt dafür verwenden.
If (Not(Quelle.Size = 0)) Then
' Dein Code
End if
Gruß martin
Hallo Imrazor!
Der Vorschlag von KingNothing ist natürlich besser, aber dann würde ich es so machen:
Gruß Dieter
Der Vorschlag von KingNothing ist natürlich besser, aber dann würde ich es so machen:
Sub Move(Quellpfad, Zielpfad)
Set FSO = CreateObject("Scripting.FileSystemObject")
If FSO.GetFolder(Quellpfad).Files.Count > 0 Then
FSO.MoveFile Quellpfad & "\*.*", Zielpfad & "\"
End If
End Sub
Gruß Dieter
Hallo Martin!
Deine Anregung war aber insofern gut, weil ich aus dem Stehgreif garnicht lange überlegt habe und erst durch Dich, auf die sinnvollere Lösung gekommen bin
Also, haben wir beide in Teamarbeit eine optimale Lösung gefunden
Gruß Dieter
Deine Anregung war aber insofern gut, weil ich aus dem Stehgreif garnicht lange überlegt habe und erst durch Dich, auf die sinnvollere Lösung gekommen bin
Also, haben wir beide in Teamarbeit eine optimale Lösung gefunden
Gruß Dieter
Das ist genau das script snippet das ich gesucht habe. Es scheint mir hier genau die Menschen zu geben, die mir vielleicht ein wenig helfen könnten mit vbs
Wenn ich die Sub richtig verstehe, stellt sie fest, ob ein verzeichniss lehr ist oder nicht.
das ist genau was ich suchte.
so nun habe ich eine kleine Herrausforderung vor der ich stehe und kenn mich null aus mit vbs
also ich habe ein Verzeichnis in dem sind mehrere Unterverzeichnisse. Diese sollen jetzt darauf untersucht werden ob sie lehr sind, und wenn nicht, sollte jeweils für ein verzeichnis wo ne datei drin ist, folgende Zeilen in eine xml Datei eigefügt werden:
bei jeden aufruf sollte die xml datei lehr gemacht werden und die zeilen neu reingeschrieben werden .. geht sowas mit vbs und wie könnt ich das realisieren?
Danke für jeden Tipp
Andy
Wenn ich die Sub richtig verstehe, stellt sie fest, ob ein verzeichniss lehr ist oder nicht.
das ist genau was ich suchte.
so nun habe ich eine kleine Herrausforderung vor der ich stehe und kenn mich null aus mit vbs
also ich habe ein Verzeichnis in dem sind mehrere Unterverzeichnisse. Diese sollen jetzt darauf untersucht werden ob sie lehr sind, und wenn nicht, sollte jeweils für ein verzeichnis wo ne datei drin ist, folgende Zeilen in eine xml Datei eigefügt werden:
<line>
<mode>Execute</mode>
<entry>NameDesUnterverzeichnisesMitInhalt</entry>
<count>3</count>
<options>0</options>
</line>
bei jeden aufruf sollte die xml datei lehr gemacht werden und die zeilen neu reingeschrieben werden .. geht sowas mit vbs und wie könnt ich das realisieren?
Danke für jeden Tipp
Andy
Moin Duswald,
willkommen im neuen Jahr und im Forum.
Ich habe gesehen, dass du als in deinem Profil "Beruf: Creative Director" angegeben hast.
Das entschuldigt aber nicht alles.
Bitte mach noch mal mit orthografisch etwas konservativerer Schreibweise einen neuen Beitrag auf, da erstens die noch folgenden nötigen Rückfragen einen eigenen Beitrag rechtfertigen und zweitens ja nun das Ermitteln der Datei-Anzahl je Ordner nur der kleinere Teil des Problems ist.
Dieser Beitrag hier ist eigentlich hinreichend beantwortet.
Grüße
Biber
willkommen im neuen Jahr und im Forum.
Ich habe gesehen, dass du als in deinem Profil "Beruf: Creative Director" angegeben hast.
Das entschuldigt aber nicht alles.
Bitte mach noch mal mit orthografisch etwas konservativerer Schreibweise einen neuen Beitrag auf, da erstens die noch folgenden nötigen Rückfragen einen eigenen Beitrag rechtfertigen und zweitens ja nun das Ermitteln der Datei-Anzahl je Ordner nur der kleinere Teil des Problems ist.
Dieser Beitrag hier ist eigentlich hinreichend beantwortet.
Grüße
Biber
Zitat von @Biber:
Moin Duswald,
willkommen im neuen Jahr und im Forum.
Ich habe gesehen, dass du als in deinem Profil "Beruf: Creative Director" angegeben hast.
Das entschuldigt aber nicht alles.
Bitte mach noch mal mit orthografisch etwas konservativerer Schreibweise einen neuen Beitrag auf, da erstens die noch folgenden
nötigen Rückfragen einen eigenen Beitrag rechtfertigen und zweitens ja nun das Ermitteln der Datei-Anzahl je Ordner nur
der kleinere Teil des Problems ist.
Dieser Beitrag hier ist eigentlich hinreichend beantwortet.
Grüße
Biber
Moin Duswald,
willkommen im neuen Jahr und im Forum.
Ich habe gesehen, dass du als in deinem Profil "Beruf: Creative Director" angegeben hast.
Das entschuldigt aber nicht alles.
Bitte mach noch mal mit orthografisch etwas konservativerer Schreibweise einen neuen Beitrag auf, da erstens die noch folgenden
nötigen Rückfragen einen eigenen Beitrag rechtfertigen und zweitens ja nun das Ermitteln der Datei-Anzahl je Ordner nur
der kleinere Teil des Problems ist.
Dieser Beitrag hier ist eigentlich hinreichend beantwortet.
Grüße
Biber
Danke Für den Hinweis Biber und auch allen im Forum ein gutes neues Jahr
Gegen meine latente Rechtschreibschwäche kämpf ich seit 30 Jahre das wird wohl mit dem Alter nicht mehr besser, aber Du hast Recht, ich werd das neu Posten und dann auch andere schon vorhandene Ansätze gleich mit einbauen in die Frage, aber heut wirds nix mehr, ich versuch es dann morgen zu schaffen.
Danke und bis morgen wenn möglich
Hallo Nochmal kurz
Hab ein wenig rumgegoogelt und verschiedene Snippets zusammengewürfelt und Plötzlich hatte ich dann die Lösung zusammengebracht ...
Auch ein Blindes Legesteniker Huhn findet ab und an ma ein Korn.
hier meine Lösung zu der gestellten Frage von Vorhin:
Das is es was ich im Prinzip wollte ... Bisserl finetunen noch ... aber dann gehts schon.
Dann mach ich nicht extra noch nen thread auf und hoffe, das der ein oder andere Besucher das dann auch irgendwie sinnvoll findet und verwenden kann.
Liebe Grüße aus Bayern: Andy
Hab ein wenig rumgegoogelt und verschiedene Snippets zusammengewürfelt und Plötzlich hatte ich dann die Lösung zusammengebracht ...
Auch ein Blindes Legesteniker Huhn findet ab und an ma ein Korn.
hier meine Lösung zu der gestellten Frage von Vorhin:
Dim fsoA, tfA, cnt
Const FOR_READING = 1
set myWs = CreateObject("Wscript.Shell")
Sub ShowFolderList(folderspec, tf)
Dim fs, f, f1, fc, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(folderspec)
Set fc = f.SubFolders
For Each f1 in fc
If f1.Files.Count > 1 Then
Select Case f1.name
Case "Apple Software Update":
'inix machen
Case Else
tf.WriteLine(" <line>")
tf.WriteLine(" <mode>Execute</mode>")
tf.WriteLine(" <entry>" & f1.name & "</entry>")
tf.WriteLine(" <count>3</count>")
tf.WriteLine(" <options>0</options>")
tf.WriteLine(" </line>")
s = s & f1.name
s = s & vbCrLf
End Select
End If
Next
MsgBox s
End Sub
Set fsoA = CreateObject("Scripting.FileSystemObject")
Set tfA = fsoA.CreateTextFile("C:\000test.txt", True)
tfA.WriteLine("#EXTM3U")
ShowFolderList "c:\Programme", tfA
tfA.Close
Das is es was ich im Prinzip wollte ... Bisserl finetunen noch ... aber dann gehts schon.
Dann mach ich nicht extra noch nen thread auf und hoffe, das der ein oder andere Besucher das dann auch irgendwie sinnvoll findet und verwenden kann.
Liebe Grüße aus Bayern: Andy
ahh kurz zur erklärung noch, es werden da jetzt nur zu testzwecken die folders C:/Programme genutzt.
Mit dem Select case, kann ich dann noch bestimmte Folders generell ausschliesen vom erfassen. Da gäbs warscheinlich noch elegantere methoden für, aber es is halt ne quick n Dirty Lösung meinem vbs horizont entsprechend
Mit dem Select case, kann ich dann noch bestimmte Folders generell ausschliesen vom erfassen. Da gäbs warscheinlich noch elegantere methoden für, aber es is halt ne quick n Dirty Lösung meinem vbs horizont entsprechend
Hi,
Frohes neues Jahr zusammen!
Nur noch ein, nein besser zwei kleine Tipps am Rande für dich als VBS-Neuling:
1. Aussagekräftige Variablenbezeichnungen: Soweit ich weiss, gibt es in VBS kein Limit für Variablennamen, daher würde ich immer möglichst gut beschreibende Namen verwenden.
Also z.B. anstelle von "For Each f1 in fc"
kann man machen: "For Each folder in folderList"
2. Kommentare: Kommentier' deinen Code. Besser ist das.
Kommentare kannst du mit ' einfügen. Wenn du einen Editor wie z.B. SciTE benutzt, dann gibts für's Ein- und Auskommentieren sogar Shortcuts.
Wenn du diese zwei Tipps noch berücksichtigst, wirst du es dir selber später danken, nämlich dann, wenn du oder einer deiner Kollegen deinen eigenen Code lesen/verstehen/ändern muss(t). Ohne Kommentare ist das schwerer als es sich jetzt anhört, insbesondere für andere.
LG Martin
Frohes neues Jahr zusammen!
Nur noch ein, nein besser zwei kleine Tipps am Rande für dich als VBS-Neuling:
1. Aussagekräftige Variablenbezeichnungen: Soweit ich weiss, gibt es in VBS kein Limit für Variablennamen, daher würde ich immer möglichst gut beschreibende Namen verwenden.
Also z.B. anstelle von "For Each f1 in fc"
kann man machen: "For Each folder in folderList"
2. Kommentare: Kommentier' deinen Code. Besser ist das.
Kommentare kannst du mit ' einfügen. Wenn du einen Editor wie z.B. SciTE benutzt, dann gibts für's Ein- und Auskommentieren sogar Shortcuts.
Wenn du diese zwei Tipps noch berücksichtigst, wirst du es dir selber später danken, nämlich dann, wenn du oder einer deiner Kollegen deinen eigenen Code lesen/verstehen/ändern muss(t). Ohne Kommentare ist das schwerer als es sich jetzt anhört, insbesondere für andere.
LG Martin
... und wenn schon Deklarationen (mit "
Grüße
bastla
Dim
"), dann aber auch für alle Variablen (auch wenn sie, wie "myWs
", entbehrlich sind - die wird nämlich ebenso wenig verwendet wie die Konstante aus Zeile 2 ). Wenn dann noch ein "Option Explicit
" am Anfang des Scripts steht, kannst Du auch falsch geschriebene Variablennamen sehr leicht finden ...Grüße
bastla
Moin Duswald,
"Hallo Moderator, bitte diesem Beitrag schliessen, bevor ich immer weiter von Ästlein auf Zweiglein komme,
bevor ich endlich einen eigenen Beitrag zu meinen eigenen Anforderungen aufmache."
Zur Not kannst du auch das "bitte" weglassen
Grüße
Biber
Manchmal denke ich, das Ansingen gegen eine rauschende Brandung wäre viel stressärmer als dieses erbärmliche Halbmod-Dasein hier im Forum....
<tiefer Seufzer>
Zitat von @Duswald:
ha - Jetzt doch noch eine Frage
was müßte ich da rein schreiben, damit er Dateien, die älter als 3 Tage sind und mp3 als dateiendung haben beim
du8rchlaufen gleich rauslöscht?
Wie wäre es mitha - Jetzt doch noch eine Frage
was müßte ich da rein schreiben, damit er Dateien, die älter als 3 Tage sind und mp3 als dateiendung haben beim
du8rchlaufen gleich rauslöscht?
"Hallo Moderator, bitte diesem Beitrag schliessen, bevor ich immer weiter von Ästlein auf Zweiglein komme,
bevor ich endlich einen eigenen Beitrag zu meinen eigenen Anforderungen aufmache."
Zur Not kannst du auch das "bitte" weglassen
Grüße
Biber
Manchmal denke ich, das Ansingen gegen eine rauschende Brandung wäre viel stressärmer als dieses erbärmliche Halbmod-Dasein hier im Forum....
<tiefer Seufzer>
Hallo Biber - also ich hab jetzt mal nach anweisungen von hier das Script etwas verändert, aber es klappt nicht und deshalb habe ich wie du wolltest eine neue Frage aufgemacht um hier das nun zu beenden. Die neue Frage ist hier ...
Ordner durchsuchen und namen in xml Datei schreiben
Und ich hoffe, dass ich sie richtig plaziert habe.
Danke euch mal soweit für eure Hilfe
Ordner durchsuchen und namen in xml Datei schreiben
Und ich hoffe, dass ich sie richtig plaziert habe.
Danke euch mal soweit für eure Hilfe