Ordner mit Tagesdatum und Uhrzeit erstellen VBS
Hallo!
Ich habe noch nie mit VBS gearbeitet und habe im Netz ein Skript gefunden mit dem ich eine Automatische Datensicherung durchführen kann.
Der Rechner auf dem das Skript laufen soll ist Win 2000 Server ohne Domäne. Es so ein Ordner von C:\ auf ein Netzlaufwerk kopiert werden, da es für eine Datensicherung ist, möchte ich gerne das Erstelldatum und Uhrzeit als Ordnernamen haben.
z.B.: C:\Test => Y:\Backup\18.07.07_10:15\Test
Wäre schön, wenn das Skript gleichzeitig alle Ordner löscht die älter als 1 Monat sind.
Der Code vom dem gefundenen Skript:
*
*Q.U.E.L.L.E.: http://www.arstechnica.de/computer/vbs/notebook.html * In Ordnung so?
*
Vielen Dank!
MfG
Sebastian
Ich habe noch nie mit VBS gearbeitet und habe im Netz ein Skript gefunden mit dem ich eine Automatische Datensicherung durchführen kann.
Der Rechner auf dem das Skript laufen soll ist Win 2000 Server ohne Domäne. Es so ein Ordner von C:\ auf ein Netzlaufwerk kopiert werden, da es für eine Datensicherung ist, möchte ich gerne das Erstelldatum und Uhrzeit als Ordnernamen haben.
z.B.: C:\Test => Y:\Backup\18.07.07_10:15\Test
Wäre schön, wenn das Skript gleichzeitig alle Ordner löscht die älter als 1 Monat sind.
Der Code vom dem gefundenen Skript:
' Quellpfad der zu sichernden Dateien angeben
Const Quelle = "C:\TEST"
' Ziel der Sicherung angeben
Const Ziel = "Y:\Test\"
Dim FS, WSH, Anzahl
Const Titel = "Automatische Datensicherung"
Set FS = CreateObject("Scripting.FileSystemObject")
Set WSH = CreateObject("WScript.Shell")
On Error Resume Next
PfadTesten Quelle
PfadTesten Ziel
Anzahl = 0
DateiSystemDurchsuchen Quelle
WSH.PopUp Anzahl & " Datei(en) von " & Quelle & " nach " & Ziel _
& " gesichert", 5, Titel, vbOKOnly + vbCritical
' *** Ende des Skripts
' ---------------------------------------------------------- '
' Rekursives Unterprogramm um das Dateisystem zu durchsuchen
' ---------------------------------------------------------- '
Private Sub DateiSystemDurchsuchen(Pfad)
Dim Ordner, UnterOrdner, Datei
If FS.FolderExists(Pfad) Then
' Then: Falls Ordner übergeben wurde
Set Ordner = FS.GetFolder(Pfad)
' Papierkorb nicht bearbeiten
If LCase(Ordner.Name) = "recycled" Then Exit Sub
' Funktion Bearbeiten() für Ordner aufrufen
Bearbeiten Ordner, False
' Alle Dateien im Ordner bearbeiten
For Each Datei In Ordner.Files
' Prozedur Bearbeiten() für Dateien aufrufen
Bearbeiten Datei, True
Next
' Alle Unterordner rekursiv bearbeiten
For Each UnterOrdner In Ordner.SubFolders
' Einstieg In die Rekursion
DateiSystemDurchsuchen UnterOrdner
Next
ElseIf FS.FileExists(Pfad) Then
' Else: Falls eine einzelne Datei übergeben wurde
Bearbeiten FS.GetFile(Pfad), True
End If
End Sub
' Hier wird festgelegt, wie Dateien bearbeitet werden sollen.
Private Function Bearbeiten(Datei, IstDatei)
Dim ZielPfad
' Schreibschutz-Attribut einer/s Datei/Ordners löschen
ZielPfad = Ziel & Mid(Datei.Path, Len(Quelle) + 1)
If IstDatei Then
If (Datei.Attributes And 32) Then
Anzahl = Anzahl + 1
Bearbeiten = True
Datei.Attributes = Datei.Attributes And Not 32
Datei.Copy ZielPfad, True
End If
Else
If Not FS.FolderExists(ZielPfad) Then FS.CreateFolder ZielPfad
End If
End Function
Private Sub PfadTesten(Pfad)
Dim TempPfad
' Existiert das Laufwerk ?
TempPfad = FS.GetDriveName(Pfad)
If Not FS.DriveExists(TempPfad) Then
WSH.PopUp "Laufwerk " & TempPfad & " existiert nicht", 5, Titel, vbCritical
WScript.Quit
ElseIf Not FS.Drives(TempPfad).IsReady Then
MsgBox "Kein Medium In Laufwerk " & TempPfad & " eingelegt", vbCritical, Titel
WScript.Quit
End If
' Existiert der Pfad ? Falls Nein, Pfad aufbauen
Pfad = Trim(Pfad)
If Right(Pfad, 1) <> "\" Then Pfad = Pfad & "\"
TempPfad = Pfad
While Not FS.FolderExists(TempPfad)
If FS.FolderExists(FS.GetParentFolderName(TempPfad)) Then
FS.CreateFolder TempPfad
' Konnte Pfad erstellt werden ?
If Not FS.FolderExists(TempPfad) Then
MsgBox "Pfad '" & TempPfad & "' kann nicht erstellt werden", vbCritical, Titel
WScript.Quit
End If
TempPfad = Pfad
Else
TempPfad = FS.GetParentFolderName(TempPfad)
End If
Wend
End Sub
*
*Q.U.E.L.L.E.: http://www.arstechnica.de/computer/vbs/notebook.html * In Ordnung so?
- *
*
Vielen Dank!
MfG
Sebastian
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 64077
Url: https://administrator.de/forum/ordner-mit-tagesdatum-und-uhrzeit-erstellen-vbs-64077.html
Ausgedruckt am: 19.04.2025 um 01:04 Uhr
11 Kommentare
Neuester Kommentar
Hallo Liquido88!
Zuerst zum etwas einfacheren Teil: Verwende anstatt "Const Ziel = "Y:\Test\"
Damit wird zwar ein anderes als das von Dir vorgegebene Datumsformat erzeugt, nämlich "2007-07-18", aber damit hast Du es wesentlich leichter, die Sicherungen nach Datum zu sortieren.
Solltest Du auf dem anderen Format bestehen, wäre die 2. Zeile durch
zu ersetzen.
Der ":" in der Zeitangabe muss durch ein anderes Zeichen (bei mir durch ".") ersetzt werden, da er in Datei-/Ordnernamen nicht zulässig ist (ADS einmal ausgenommen).
Zum Löschen der Ordner: Meinst Du damit, dass aus dem Ordner "Y:\Backup" die Unterordner entsprechend dem im Ordnernamen enthaltenen Datum gelöscht werden sollen, also, beim von mir verwendeten Datumsformat, alle Unterordner mit einem Namen "2007-06-17_Zeit" und davor?
Grüße
bastla
P.S.: Könntest Du den Code oben bitte mit < code> und < /code> (jeweils ohne Leerstellen) formatieren? - Erledigt. Danke Biber.
Zuerst zum etwas einfacheren Teil: Verwende anstatt "Const Ziel = "Y:\Test\"
Ziel = "Y:\Backup" & _
Year(Date) & "-" & Right("0" & Month(Date), 2) & "-" & Right("0" & Day(Date), 2) & "_" & _
Replace(FormatDateTime(Time, vbShortTime), ":", ".") & _
"\Test\"
Solltest Du auf dem anderen Format bestehen, wäre die 2. Zeile durch
FormatDateTime(Date, vbShortDate) & "_" & _
Der ":" in der Zeitangabe muss durch ein anderes Zeichen (bei mir durch ".") ersetzt werden, da er in Datei-/Ordnernamen nicht zulässig ist (ADS einmal ausgenommen).
Zum Löschen der Ordner: Meinst Du damit, dass aus dem Ordner "Y:\Backup" die Unterordner entsprechend dem im Ordnernamen enthaltenen Datum gelöscht werden sollen, also, beim von mir verwendeten Datumsformat, alle Unterordner mit einem Namen "2007-06-17_Zeit" und davor?
Grüße
bastla
@bastla
P.S.: Könntest Du den Code oben bitte mit < code> und < /code> (jeweils ohne Leerstellen) formatieren?
Hmm.. er hat nicht direkt "nein" gesagt... aber bevor ich es als zögerliches "Vielleicht" interpretiere, hab ich es schnell selbst eingebaut.
@Liquido88
Ich habe noch nie mit VBS gearbeitet und habe im Netz ein Skript gefunden mit dem ich eine Automatische Datensicherung durchführen kann.
Hm.
Hmmmm.
Wir müssen reden.
Lass mich den Satz bitte formatieren...
Ich habe noch nie mit VBS gearbeitet und..
...ich war so gespannt, wie dieser Satz weitergeht....
..und habe im Netz ein Skript gefunden...
Lass mich raten: Auf einer Site, der ungenannt bleiben möchte von einem Verfasser John Doe.
Und der hat einen so grimmig guckenden Atavar, dass Du Dich nicht getraut hast, ihn direkt zu fragen.
Wenn es ein "gefundenes Skript" ist, bitte immer die Quellenangabe dazu schreiben.
Und auf keinen Fall die Verfasserangaben (z.B. "Copyright Dietmar Müller 2004") einfach löschen.
Siehe ->Forumsregeln. Siehe ->Knigge. Siehe ->Anstand. Siehe ->Nettiquette.
..mit dem ich eine Automatische Datensicherung durchführen kann.
Na ja, wenn dieser Teilsatz stimmen würde, hätten wir uns nie kennengelernt...
Der Code vom dem gefundenen Skript:
Es gibt keinen Vonitiv in der deutschen Sprache. "Der Code des gefundenen Skripts:"
Bitte versuche, Dich auch selbst mit dem Thema (mit VBS, nicht mit dem Vonitiv)auseinanderzusetzen.
Natürlich muss nicht jedes Rad 49x neu erfunden werden.
Aber ein "gefundenes" Skript blind übernehmen und hier eben winterfest oder TÜV-fertig machen zu lassen,
das ist für Dich und auch für die Hilfe-Bietenden im Forum eher unbefriedigend.
Und bitte trage die Quellenangabe nach.
Danke
Biber
P.S.: Könntest Du den Code oben bitte mit < code> und < /code> (jeweils ohne Leerstellen) formatieren?
Hmm.. er hat nicht direkt "nein" gesagt... aber bevor ich es als zögerliches "Vielleicht" interpretiere, hab ich es schnell selbst eingebaut.
@Liquido88
Ich habe noch nie mit VBS gearbeitet und habe im Netz ein Skript gefunden mit dem ich eine Automatische Datensicherung durchführen kann.
Hm.
Hmmmm.
Wir müssen reden.
Lass mich den Satz bitte formatieren...
Ich habe noch nie mit VBS gearbeitet und..
- ...und habe mich jetzt 3 Stunden (3 Tage, 3 Wochen,...) intensiv damit auseinandergesetzt... ??
- ...und mit meiner Freundin gewettet, dass ich dennoch eine DIN A4-Seite laufenden VBS-Code schreiben kann, während sie sich die Haare fönt...?
- ...und mein Chef hat gesagt, nach dem Peter-Prinzip /oder hier bin ich deshalb genau der Richtige für diesen Job..??
...ich war so gespannt, wie dieser Satz weitergeht....
..und habe im Netz ein Skript gefunden...
Lass mich raten: Auf einer Site, der ungenannt bleiben möchte von einem Verfasser John Doe.
Und der hat einen so grimmig guckenden Atavar, dass Du Dich nicht getraut hast, ihn direkt zu fragen.
Wenn es ein "gefundenes Skript" ist, bitte immer die Quellenangabe dazu schreiben.
Und auf keinen Fall die Verfasserangaben (z.B. "Copyright Dietmar Müller 2004") einfach löschen.
Siehe ->Forumsregeln. Siehe ->Knigge. Siehe ->Anstand. Siehe ->Nettiquette.
..mit dem ich eine Automatische Datensicherung durchführen kann.
Na ja, wenn dieser Teilsatz stimmen würde, hätten wir uns nie kennengelernt...
Der Code vom dem gefundenen Skript:
Es gibt keinen Vonitiv in der deutschen Sprache. "Der Code des gefundenen Skripts:"
Bitte versuche, Dich auch selbst mit dem Thema (mit VBS, nicht mit dem Vonitiv)auseinanderzusetzen.
Natürlich muss nicht jedes Rad 49x neu erfunden werden.
Aber ein "gefundenes" Skript blind übernehmen und hier eben winterfest oder TÜV-fertig machen zu lassen,
das ist für Dich und auch für die Hilfe-Bietenden im Forum eher unbefriedigend.
Und bitte trage die Quellenangabe nach.
Danke
Biber
Hallo Liquido88!
Das Löschen der alten Ordner sollte eher als eigenes Script ausgeführt werden, da es mit dem Backup nicht unmittelbar zusammenhängt.
Eine Möglichkeit wäre:
Kommentare habe ich, in der Hoffnung, Dich bei der Beschäftigung mit VBS (wie kurz oder lang sie auch bisher tatsächlich gewesen sein mag) ein Stückchen weiter zu bringen, etwas zahlreicher eingefügt.
Grüße
bastla
Das Löschen der alten Ordner sollte eher als eigenes Script ausgeführt werden, da es mit dem Backup nicht unmittelbar zusammenhängt.
Eine Möglichkeit wäre:
'Alte Ordner löschen
strZiel = "Y:\Backup"
'Altergrenze in Tagen festlegen
intAlter = 30
'Limitdatum ermitteln
dtLimit = Date - intAlter
'Limitdatum formatieren nach "JJJJ-MM-TT"
strLimit = Year(dtLimit) & "-" & Right("0" & Month(dtLimit), 2) & "-" & Right("0" & Day(dtLimit), 2)
'Länge des Limitdatums für den Vergleich nicht bei jedem Schleifendurchlauf, sondern gleich vorweg ermitteln
intCheckLen = Len(strLimit)
Set fso = CreateObject("Scripting.FileSystemObject")
'Falls der Zielordner nicht gefunden wurde, Script kommentarlos beenden
'(allerdings mit Fehlercode 1 für eine allfällige Auswertung durch ein aufrufendes Programm).
If Not fso.FolderExists(strZiel) Then WScript.Quit(1)
'Alle einzelnen Unterordner des Zielordners durchgehen
For Each fldFolder In fso.GetFolder(strZiel).SubFolders
'Zur Sicherheit das Namensformat "JJJJ-MM-" anhand der "-" überprüfen ...
If Mid(fldFolder.Name, 5, 1) = "-" And Mid (fldFolder.Name, 8,1) = "-" Then
'Anfang des Ordnernamens in der entsprechenden Länge mit dem Limitdatum vergleichen ...
If Left(fldFolder.Name, intCheckLen) < strLimit Then
'... und wenn kleiner (=früher), Ordner löschen
fldFolder.Delete
End If
End If
Next
Grüße
bastla
@Liquido88
Grüße
bastla
Wenn ich die Seite bloß noch im Kopf hätte...
Könnte es diese gewesen sein?Ich werde in Zukunft aber Quellenangaben machen, damit nicht noch jemand seine Langeweile mit meckern verbringen muss.
Dazu muss ich nun schon sagen: Richtiger Vorsatz, Begründung aber voll daneben ...Grüße
bastla
Moin Liquido88 & bastla,
es ging mir nicht darum, Dich anzuraunzen oder nur mal ein bisschen zu meckern, weil meine blutjunge rothaarige Praktikantin gerade unpässlich ist und ich Frust ablassen wollte.
Es ging mr um
Angebrachter/angemessener fände ich eine vorsichtigere und ergebnisoffenere Annäherung an das Problem. Also z.B. die Frageformulierung:
"Ich bitte um Euren Rat. Ich habe keine Skripterfahrung, muss aber das Problem ...lalala.. lösen.
Was wäre denn ein geeignetes Werkzeug dafür?
Oder gibt es gar Tools, die mir eine Automatisierung dieser Aufgabe OHNE Skript-Eintipperei erlauben?
Oder ein ausführliches Musterbeispiel, dass sich mit wenig Aufwand anpassen ließe?"
Und, um noch einen letzten Gedanken mit anderen Worten als oben auszudrücken:
Unbefriedigend finde ich es, wenn wir zwar eine Formal-Lösung "liefern", diese - wie es bei bastlas Schnipseln Standard ist- auch unter Wasser laufen würde, aber der Fragesteller die Lösung gar nicht wiederverwenden, auf andere Sachverhalte übertragen kann.
Oder gar, die schlechteste aller "Lösungen", dem Fragesteller die Auseinandersetzung mit dem Problem abnimmt... "es läuft ja..".
Dennoch - als persönlicher Angriff war es nicht gemeint.
Meine Kritik ist -zumindest bemühe ich mich darum- immer auf Beiträge und gepostete Inhalte bezogen. Nicht auf die Person dahinter - nicht persönlich oder beleidigend gemeint.
Grüße
Biber
P.S. Relativ unabhängig davon, ob der o.g. Code von Ralf Pfeifer's Seite stammt oder nicht, einen Blick darauf kann ich nur empfehlen.
es ging mir nicht darum, Dich anzuraunzen oder nur mal ein bisschen zu meckern, weil meine blutjunge rothaarige Praktikantin gerade unpässlich ist und ich Frust ablassen wollte.
Es ging mr um
- die fehlende Quellenangabe. Wenn sich jemand die Mühe macht, einen Codeschnipsel nicht nur auf seiner Homepage zu veröffentlichen, sondern diesen auch noch zu dokumentieren, herzuleiten und jeden Einzelschritt verständlich zu erklären, dann sollte dieser auch beim Namen genannt werden. Ehre wem Ehre gebührt.
- unsere Forumsregeln, wo die Pflicht zur Quellenangabe beim Zitieren anderer VerfasserInnen auch explizit aufgeführt ist - dort allerdings eher mit rechtlichem Hintergrund als mit moralischem.
- eine rein persönliche Meinung war allerdings in der Tat die Kritik am Vorgehen. "Ich habe keinerlei Erfahrung mit VBS und will aber ein irgendwie auf meinen PC gefallenes 60-Zeilen-VBSkript zum Fliegen bringen, produktiv einsetzen und dann soll es gefälligst unbemerkt und friedlich vor sich hinschnurren."
Angebrachter/angemessener fände ich eine vorsichtigere und ergebnisoffenere Annäherung an das Problem. Also z.B. die Frageformulierung:
"Ich bitte um Euren Rat. Ich habe keine Skripterfahrung, muss aber das Problem ...lalala.. lösen.
Was wäre denn ein geeignetes Werkzeug dafür?
Oder gibt es gar Tools, die mir eine Automatisierung dieser Aufgabe OHNE Skript-Eintipperei erlauben?
Oder ein ausführliches Musterbeispiel, dass sich mit wenig Aufwand anpassen ließe?"
Und, um noch einen letzten Gedanken mit anderen Worten als oben auszudrücken:
Unbefriedigend finde ich es, wenn wir zwar eine Formal-Lösung "liefern", diese - wie es bei bastlas Schnipseln Standard ist- auch unter Wasser laufen würde, aber der Fragesteller die Lösung gar nicht wiederverwenden, auf andere Sachverhalte übertragen kann.
Oder gar, die schlechteste aller "Lösungen", dem Fragesteller die Auseinandersetzung mit dem Problem abnimmt... "es läuft ja..".
Dennoch - als persönlicher Angriff war es nicht gemeint.
Meine Kritik ist -zumindest bemühe ich mich darum- immer auf Beiträge und gepostete Inhalte bezogen. Nicht auf die Person dahinter - nicht persönlich oder beleidigend gemeint.
Grüße
Biber
P.S. Relativ unabhängig davon, ob der o.g. Code von Ralf Pfeifer's Seite stammt oder nicht, einen Blick darauf kann ich nur empfehlen.