VBScript Fehler Dateien bereits vorhanden?
Ich schreibe gerade an einer art "DesktopCleaner"... das ganze soll erstmal nur auf meinem System funktionieren.
Option Explicit
Dim objFSO, objFolder, objSubFld, f1, f2, colFiles, pathname, i
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("D:\")
ChkSubFld objFolder
Private Sub ChkSubFld(StartFolder)
ChkFiles StartFolder
Set objSubFld = StartFolder
For Each f2 in objSubFld
ChkSubFld f2
Next
End Sub
Private Sub ChkFiles(Start)
Set colFiles = Start.Files
For Each f1 in colFiles
pathname = objFSO.GetAbsolutePathName(f1)
MsgBox pathname
If Not (pathname = "D:\4.m3u") Or (pathname = "D:\CyberGhost 6.lnk") Or (pathname = "D:\desktop.ini") Or (pathname = "D:\Electrum-LTC.lnk") Or (pathname = "D:\Electrum.lnk") Or (pathname = "D:\Lazarus.lnk") Or (pathname = "D:\Start Tor Browser.lnk") Or (pathname = "D:\TeamSpeak 3 Client.lnk") Then
objFSO.MoveFile pathname, "D:\Alles Desktop\DesktopCleaner"
End If
Next
End Sub
objFSO.MoveFile "E:\VBS\DesktopCleaner\data\TranscodedWallpaper", "C:\Users\Ericmc\AppData\Roaming\Microsoft\Windows\Themesr"
MsgBox "Fertig!"
Also der Ablauf soll sein: Lösche alle Dateien auf dem Desktop (D:), ändere das Desktop Hintergrundbild. Der Fehler ist wohl beim ersten objFSO.MoveFile .... ich schaffe es aber nicht ihn zu beheben. Es kommt immer die aussage die Dateien würden bereits existieren?? Obwohl der Ordner DesktopCleaner leer ist. Danke für eure Hilfe.
2 Antworten
Wirkt sich das NOT in der Abfrage denn auf alle Folgefälle aus bzw. soll dem so sein?
If Not (pathname = "D:\4.m3u") Or (pathname = "D:\CyberGhost 6.lnk") Or (pathname = "D:\desktop.ini") Or (pathname = "D:\Electrum-LTC.lnk") Or (pathname = "D:\Electrum.lnk") Or (pathname = "D:\Lazarus.lnk") Or (pathname = "D:\Start Tor Browser.lnk") Or (pathname = "D:\TeamSpeak 3 Client.lnk") Then
Prinzipiell würde ich da mit einem regulären Ausdruck oder einem
switch-Statement (SELECT ... CASE) arbeiten.
Des Weiteren solltest du alle versteckten (System-)Dateien bei Windows einmal einblenden lassen und via Debugger den aktuellen Einzelfall prüfen, an dem deine Anwendung da scheitert.
Ansonsten wäre die echte und vollständige Fehlermeldung interessant.
- Dann müsstest du das auch für jeden Fall so angeben: IF NOT a OR NOT b OR NOT c ...
- Genau. Doch diese Bedingung könntest du so doch verkürzen oder lesbarer gestalten. Bei einem SELECT CASE würde im CASE ELSE dein Code angeführt werden. Sicherlich gäbe es noch andere Alternativen, bspw. das Speichern aller Pfade in einer Liste und die darauffolgende Abfrage, ob der Wert in dieser Liste vorkommt.
- Debugging: Es wäre für den Anfang ausreichend für dich zu erfahren, welche Datei er gerade verschieben möchte. Also lasse dir den Pfad ausgeben.
- Füge bei dem Zielpfad mal noch einen Backslash an, so, wie es in der Dokumentation auch aufgeführt wird. https://msdn.microsoft.com/de-de/library/2wcf3ba6(v=vs.84).aspx
*Lösche alle Dateien ausser desktop.ini usw.
1. Ja Das Not soll sich auf alle beziehen (wenn nicht das oder das oder das...)
2. Das verstehe ich nicht ganz. Es soll ja etwas geschehen wenn es nicht eine bestimmte Dateiart ist.
3. Keine versteckten Dateien
4. Weiß nicht genau wie man eine VBS Datei debuggt
5 Fehlermeldung: