Jump to content

VBScript für Dateisuche wird benötigt


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo Leute,

 

habe folgendes Problem:

Unser Fileserver wird langsam voll, da haben wir nach einer Lösung gesucht und uns auf eine folgende Massnahme geeinigt.

 

Lösung:

Ein VBScirpt soll vom User gestartet werden:

User soll in ein Verzeichnis auswählen welches durchsucht werden soll (einschließlich Unterverzeichnise) und Datum (welches Er auch eingeben soll). Wenn jetzt Dateien im eingegebenen Verzeichnis oder Unterverzeichnis, die älter als das eigegeben Datum sind, dann soll er automatisch das gesammte Verzeichnis mit Unterverzeichnisen und Dateien in dem ausgewählten Verzeichnis packen und anschließend alle Unterverzeichnise und Dateien löschen.

 

Würde mich über jede Unterstützung der Scripterei freuen, da ich in VBS erst ein Neuling bin und mich mit dieser Aufgabenstellug leicht überfordert fülle.

 

mfg

Coyote

Link zu diesem Kommentar

Hi,

was verstehst du unter Unterstützung?

 

- Literaturempfehlung zum VBS-Selbststudium ?

Amazon.de: Windows 2000 Scripting Guide.: English Books: Microsoft Corporation finde ich hervorragend

 

- Hilfe bei den ersten Schritten ? Nur her mit den Fragen

Die wichtigste Methode wird das Filesystemobject sein. Die Syntax , sowie Beispiele findest du in der MSDN

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/0fa93e5b-b657-408d-9dd3-a43846037a0e.asp

 

- ein fertiges ausgearbeitetes Script nach deinen Vorgaben? Vielleicht findet sich jemand, der Zeit und Lust hat...

 

cu

blub

Link zu diesem Kommentar

Hi!

 

Ich habe einmal ein ähnliches Problem bearbeitet, weiß nicht genaues mehr, aber ich weiß, dass mir folgende Seite sehr geholfen hat:

Windows Scripting Host

 

Da findest du ein Beispielskript zum automatischen löschen nach Datum und ein Skript, das rekursiv alle Ordner durchsucht. Die musst du nur zusammen führen (Edit: wenn das nicht klappt versuchs mit "zusammenführen" :)) und vielleicht noch ein WScript.Run einfügen, um den Packvorgang auszulösen.

Link zu diesem Kommentar

@blub

danke für die Links, aber ein Buch für VBS(für Anfänger) habe ich schon. Leider wird so eine Situation nicht beschrieben (nicht mal ähnlich)

 

Ich brauche folgende Bausteine:

 

- Bei der Auswahl des Verzeichnises soll ein Fenster (eine Art Arbeitspalatz) aufgehen, wo der Benutzer sich sein Verzeichnis auwählt und dieser Inhalt(Pfad+Verzeichnis) in eine Variable geschrieben wird.

- Daum soll auch abgefragt werden, welches in eine Variable abgelegt werden soll

- Ausgewähltes Verzeichnis soll inkl. Unterverzeichnisen Dateien nach Kriterium Datum durchsuchen und mit de Variable dafor eingegebenes Datum vergleichen, falls älter -> den Inhalt des gesamten Verzeichnises per Commandline in dem ausgewählten Verzeichnis packen und nach erfolgreichem packen (Daten nach dem Packen nochmals prüfen) löschen.

 

Zum 1ten Punkt habe ich schon was, leider wird nur der Verzeichnisname in der Variable abgelegt und nich desen Pfad.

Zum 2ten Punkt das habe ich soweit hingekriegt.

Zum 3ten Punkt, leider weis ich gar nicht wo ich anfangen soll, da bräuchte ich unbedingt Eure Unterstützung. Für einen geübten VBSler dürfte das kein Problem seien. Ich möchte nicht unbedingt einen fertigen Script von Euch sondern evtl. die Zusammenhänge und Abläufe etwas in VBS-Sprache erklärt bekommen.

 

Würde mich über jede Unterstützung freuen.

 

mfg

Coyote

Link zu diesem Kommentar

Hi!

 

Zur Ordnerauswahl:

Set fldr = app.BrowseForFolder(0, "Welchen Ordner möchten Sie durchsuchen?", &H10&)

If fldr Is nothing then ' Abbrechen gedrückt?

WScript.Quit

Else

Ordner = fldr.Self.Path

End If

Das bringt dir den Pfad des ausgewählten Ordners. Das "BrowseForFolder"-Objekt hat verschiedene Optionen, die musst du noch nachschlagen, wenn dir das Design des Fensters nicht gefällt.

 

Zum Punkt 3 verweise ich nochmals auf den unten geposteten Link, die Beispielskripte auf dieser Seite müssten die leicht reichen.

 

EDIT:

Zur Erklärung: Du erstellst eine Funktion oder eine Sub, die innerhalb des ausgewählten Ordners alle Einträge durchgeht und den Typ des Eintrages prüft. Ist es eine Datei, dann kannst du deren Datum abfragen. Ist es ein Ordner, dann ruft die Funktion sich selbst nochmals auf und übergibt den neuen Ordner.

Den Namen einer Datei, ihren Pfad und ihr Änderungs- oder Erstellungsdatum findest du mit Hilfe des "FileSystemObject" heraus.

Daher nochmals der Link auf Windows Scripting Host. Das ist eine Seite, deren Beispiele sich nur mit dem FSO auseinandersetzen.

 

Zum Packen der Dateien: Du musst herausfinden, wie du den Befehl in der DosBox eingeben musst, damit die gewünschten Aktionen durchgeführt werden. Dann gibst du dieses Kommando genauso in ein Run-Kommando ein: WScript.Run("<Kommandostring>")

Link zu diesem Kommentar

Hallo!

 

Da du eine Sicherung alter Dateien machen willst: Bei manchen Packern kannst du das als Parameter mitgeben: Was gesichert wurde löschen . . .

 

Evtl. hilft die auch Robocopy.

 

In Verz. mit vielen Einträgen nach Dateien suchen und deren Datum prüfen geht mit VBS recht langsam - da kommt keine Freude auf :-(

 

Ausserdem ist zum Einstieg diese Aufgabe etwas fett (finde ich).

Link zu diesem Kommentar

Hallo Coyote,

 

Hab für dich einen Beispielscript für eine Recursive Suche auf einen Folder. In dem Beispielscript wird die Größe einer Datei ermittelt. Das Filedatum abzufragen und darauf zu reagieren sollte kein Problem sein.

 

lg

Reinhard

 

Function GetDirSize(strFolder,dblSum)

Dim bolIsSub,objFolder,colSubFolders,subFolder,colSubFiles,objFile

set objFolder = objFSO.getfolder(strFolder)

Set colSubFolders = objFolder.subFolders 'Unterverzeichnisse ermitteln und

For Each subFolder In colSubFolders 'durchlaufen

GetDirSize subFolder.parentfolder & "\" & subFolder.name,dblSum ' Recursiver Aufruf

Next

Set colSubFiles = objFolder.Files 'keine Unterverzeichnisse mehr, daher werden jetzt die Dateien im Verzeichnis ermittelt.

dblFolders = dblFolders + 1

For Each objFile In colSubFiles 'Alle Dateien durchlaufen und

dblSum = dblSum + objFile.size ' Dateigröße ermitteln und zusammenzählen

dblFiles = dblFiles + 1

Next

GetDirSize = dblSum 'Summe zurückliefern

end Function

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...