shooan
Goto Top

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

' (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

Content-Key: 304977

Url: https://administrator.de/contentid/304977

Printed on: April 25, 2024 at 10:04 o'clock

Member: emeriks
Solution emeriks May 20, 2016 updated at 06:29:50 (UTC)
Goto Top
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:

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.
Member: AndreasHoster
Solution AndreasHoster May 20, 2016 at 11:02:42 (UTC)
Goto Top
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)
Member: shooan
shooan Jun 09, 2016 at 06:57:21 (UTC)
Goto Top
Hi,

erst Mal Entschuldigung das ich mich erst jetzt melde, es kam mir eine schwere Krankheit dazwischen.

Nun habe mir eure Beiträge nun angesehen und auch umgesetzt.

Das Script geht soweit. Wenn sich Dateien in dem Verzeichnis befinden was angegeben ist.

Nun gibt es ein Problem, wie muss ich das Script denn erweitern um das auch Unterordner in diesem Verzeichnis untersucht und auch dort gelöscht wird?

In dem Scannverzeichniss sind alle Mitarbeiter angelegt die es im Unternehmen gibt, Weis das ist doof ist aber so.
Würde gerne das das Script dann auch diese Ordner untersucht und dann in den Verzeichnissen der Mitarbeiter auch noch weiter sich nach unten durch hangelt. So das alles dann gelöscht ist nur die Ordner bleiben erhalten.

Besten dank
Member: AndreasHoster
AndreasHoster Jun 09, 2016 at 10:05:51 (UTC)
Goto Top
Da muß man rekursiv durch die Verzeichnisse durchgehen.
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
Member: shooan
shooan Jun 09, 2016 at 12:39:15 (UTC)
Goto Top
Sorry verstehe da nur Bahnhof.
Member: AndreasHoster
AndreasHoster Jun 10, 2016 at 10:41:05 (UTC)
Goto Top
Die 13 Zeilen Code sind jetzt nicht gerade RocketScience, aber hier ein etwas ausführlicher kommentiertes Beispiel:
' 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
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.