VBS Script startet nicht auf Server 2012
Guten Morgen zusammen,
ich habe ein kleines Problemchen.
Bin gerade dabei einen neuen Druckserver auf zu setzen, der auch gleichzeitig unser Server ist für die Scans der Multifunktionsgeräte die dort in einer Freigabe die Scans als PDF ablegen.
Nun habe ich mir ein Script gesucht das angeblich diese Dateien Löschen kann, und zwar nur die dateien und nicht die Ordnerstruktur. Dieses Script möchte ich einmal die Woche laufen lassen per Azfgabenplanung um den Ordner klein zu halten und keinen Wildwuchs an daten zu haben.
Hier mal das Script
Das ganze wurde in einer Datei loeschen.vbs abgespeichert.
Nun passiert nix wenn ich die Datei starten will, weder über die cmd line noch wenn ich diese doppelklicke. Das ganze soll auf einem 2012 Server laufen.
Muss noch was eingestellt werden oder sehe ich den Wald vor lauter Bäumen nicht.
Besten Dank
Shooan
ich habe ein kleines Problemchen.
Bin gerade dabei einen neuen Druckserver auf zu setzen, der auch gleichzeitig unser Server ist für die Scans der Multifunktionsgeräte die dort in einer Freigabe die Scans als PDF ablegen.
Nun habe ich mir ein Script gesucht das angeblich diese Dateien Löschen kann, und zwar nur die dateien und nicht die Ordnerstruktur. Dieses Script möchte ich einmal die Woche laufen lassen per Azfgabenplanung um den Ordner klein zu halten und keinen Wildwuchs an daten zu haben.
Hier mal das Script
' (C) 2009 by Markus Kafurke
' www.marka-it.net
'
'Beschreibung:
'Dieses Script durchsucht den angegebenen Ordner auf Dateien,
'deren Dateinamenserweiterung ".txt" lautet und löscht diese.
'Deklaration der Konstanten/Variablen
const path = "E:\Scanner" 'Pfad des zu prüfenden Ordners
const extension = ".pdf" 'Prüfkriterium Dateiendung
dim fso, file, folder
'Objekt des Dateisystems laden
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder (path)
'Prüfung aller im Prüfordner vorhandenen Dateien auf Kriterium
'ggf. löschen oder verschieben...
for each file in folder.files
if right(file.name , 4) = extension then
file.delete
end if
next
Das ganze wurde in einer Datei loeschen.vbs abgespeichert.
Nun passiert nix wenn ich die Datei starten will, weder über die cmd line noch wenn ich diese doppelklicke. Das ganze soll auf einem 2012 Server laufen.
Muss noch was eingestellt werden oder sehe ich den Wald vor lauter Bäumen nicht.
Besten Dank
Shooan
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 304977
Url: https://administrator.de/contentid/304977
Ausgedruckt am: 26.11.2024 um 07:11 Uhr
6 Kommentare
Neuester Kommentar
Hi,
erstens laufen VBS-Scripte standardmäßig "unsichtbar", wenn sie (standardmäßig) mit wscript.exe ausgeführt werden.
Zweitens könnte es sein, dass Deine Endungen real in Großbuchstabnen sind? Falls ja, würde Zeile 21 nicht greifen. Aber so vielleicht:
Drittens könnte es sein, dass das Script eleviert ("als Administrator") ausgeführt werden muss. Um das zu testen:
E.
erstens laufen VBS-Scripte standardmäßig "unsichtbar", wenn sie (standardmäßig) mit wscript.exe ausgeführt werden.
Zweitens könnte es sein, dass Deine Endungen real in Großbuchstabnen sind? Falls ja, würde Zeile 21 nicht greifen. Aber so vielleicht:
if lcase(right(file.name , 4)) = lcase(extension) then
Drittens könnte es sein, dass das Script eleviert ("als Administrator") ausgeführt werden muss. Um das zu testen:
- starte eine CMD "als Administrator"
- starte aus dieser CMD das VBS-Script
E.
Viertens ist in Zeile 16 ein Leerzeichen zuviel (zwischen getFolder und der Klammer gehört keines rein)
Fünftens, wenn man nichts sieht, muß man halt was einbauen, damit man was sieht. Hin und wieder eine MSGBOX/wscript.echo zum interaktiven Debuggen kann Wunder wirken.
Zitat:
The most effective debugging tool is still careful thought, coupled with judiciously placed print statements.
(Brian Kernighan, Miterfinder von C)
Fünftens, wenn man nichts sieht, muß man halt was einbauen, damit man was sieht. Hin und wieder eine MSGBOX/wscript.echo zum interaktiven Debuggen kann Wunder wirken.
Zitat:
The most effective debugging tool is still careful thought, coupled with judiciously placed print statements.
(Brian Kernighan, Miterfinder von C)
Da muß man rekursiv durch die Verzeichnisse durchgehen.
So auf die Schnelle:
So auf die Schnelle:
Set fs = CreateObject("Scripting.FileSystemObject")
Set folder=fs.getfolder("D:\temp")
VerzDurchgang folder
' ***********************************
' ***** Funktionen & Prozeduren *****
' ***********************************
Sub VerzDurchgang(Verzeichnis)
' Erst alle Dateien im Verzeichnis durchgehen
FilesDurchgang Verzeichnis
' Jetzt alle Unterverzeichnisse durchgehen
For Each folder In Verzeichnis.Subfolders
VerzDurchgang folder
Next
End Sub
Sub FilesDurchgang(Verzeichnis)
For Each file In Verzeichnis.files
' ***** Was jetzt tun?
' Hier die Befehle für die Dateien angeben, Beispiel: Auflistung
WScript.echo file.Path
Next
End Sub
Die 13 Zeilen Code sind jetzt nicht gerade RocketScience, aber hier ein etwas ausführlicher kommentiertes Beispiel:
Zeilen die mit ' anfangen sind übrigens Kommentarzeilen.
Und bevor nachgefragt wird:
Ich schreibe keine kompletten Skripte für andere. Bei Copy&Paste wird nämlich nichts gelernt.
Nachfragen was bestimmte Befehle tun oder fragen warum eine Fehlermeldung kommt ist OK.
' FileSystemObject Erzeugen, da wir dessen Funktionen brauchen
Set fs = CreateObject("Scripting.FileSystemObject")
' Ein Verzeichnis-Objekt des Verzeichnisses, welches man durchgehen will erzeugen (hier d:\temp)
Set folder=fs.getfolder("D:\temp")
' Die Funktion zum Verzeichnisdurchgang aufrufen (Als Parameter das Verzeichnisobjekt mit dem Verzeichnis das man durchgehen will)
VerzDurchgang folder
' Hier die Definitionen der zwei benötigten Funktionen (könnte man auch in eine Zusammenbauen, ich finde es so übersichtlicher)
' Funktion für den Verzeichnisdurchgang (also alle Dateien und Unterverzeichnisse durchgehen und was auf die gefundenen Dateien/Verzeichnisse machen
Sub VerzDurchgang(Verzeichnis)
' Erst alle Dateien im Verzeichnis durchgehen (Separate Funktion aufrufen)
FilesDurchgang Verzeichnis
' Jetzt alle Unterverzeichnisse durchgehen
For Each folder In Verzeichnis.Subfolders
' Für jedes Unterverzeichnis die Verzeichnisdurchgangsfunktion erneut aufrufen (das nennt man Rekursion)
VerzDurchgang folder
Next
' Ende der Funktion
End Sub
' Funktion um alle Dateien in einem Verzeichnis durchzugehen
Sub FilesDurchgang(Verzeichnis)
' Hier alle Dateien im übergebenen Verzeichnis durchgehen
For Each file In Verzeichnis.files
' Hier kommt der Code rein, der angibt, was mit der Datei passieren soll
' Als Beispiel wird einfach der Pfad der Datei ausgegeben
WScript.echo file.Path
Next
' Ende der Funktion
End Sub
Und bevor nachgefragt wird:
Ich schreibe keine kompletten Skripte für andere. Bei Copy&Paste wird nämlich nichts gelernt.
Nachfragen was bestimmte Befehle tun oder fragen warum eine Fehlermeldung kommt ist OK.