Hi,
erst mal Danke für dein Script. Leider unterstützt forfiles keine UNC Pfade. Aber ich werde mal versuchen dein Script anzupassen, fällt mir aber gerade nicht leicht, sind noch Bömische Dörfer. Das Sichern der SQL Datenbank bräuchte ich nicht, da der Job schon erledigt ist. Ich müsste halt die schon gesicherte Datenbank auf das NAS kopieren, was auch nicht das Problem ist.
Mir ist noch nicht ganz klar, was dein Script macht.
Pfade angepasst und als alte_dateien_loeschen.vbs gespeichert.
'Script zu löschen von Dateien mit bestimmten Dateiendung und wenn Dateien älter als X Tage sind.
Dim fso, folder, files, sFolder, sFolder2, sFolderTarget, objFile, strDateiname
Set fso = CreateObject("Scripting.FileSystemObject")
'location of the database backup files
sFolder = "\\Eddies-PC\l$\Backup\"
sFolder2 = "\\Eddies-PC\l$\Backup\JOBS\"
Set folder = fso.GetFolder(sFolder)
Set files = folder.files
'used for writing to textfile - generate report on database backups deleted
Const ForAppending = 8
Const ForWriting = 2
'Prüfen ob es die Log.txt schon gibt, wenn nein, erstellen und gleich wieder schliessen.
'Ansonsten wird der Zugriff beim weiteren schreiben verweigert.
If fso.FileExists(sFolder2 & "Log.txt") Then
'Datei ist vorhanden und wird gelöscht, anschließend wieder neu erstellt und geschlossen.
fso.DeleteFile (sFolder2 & "Log.txt")
Set strDateiname = fso.CreateTextFile(sFolder2 & "Log.txt")
strDateiname.Close
Else
'Datei ist NICHT vorhanden und wird neu erstellt und geschlossen.
Set strDateiname = fso.CreateTextFile(sFolder2 & "Log.txt")
strDateiname.Close
End If
'Datei zum schreiben öffnen
Set objFile = fso.OpenTextFile(sFolder2 & "Log.txt", ForWriting, TristateUseDefault)
objFile.Write "================================================================" & vbCrLf & vbCrLf
objFile.Write " Bericht über gelöschte Datenbank Backup Dateien " & vbCrLf
objFile.Write " Datum: " & FormatDateTime(Now(), 1) & "" & vbCrLf
objFile.Write " Uhrzeit: " & FormatDateTime(Now(), 3) & "" & vbCrLf & vbCrLf
objFile.Write "================================================================" & vbCrLf
Dim itemFiles, sDateiname, sEndung
'iterate thru each of the files in the database backup folder
For Each itemFiles In files
'retrieve complete path of file for the DeleteFile method and to extract
'file extension using the GetExtensionName method
sDateiname = sFolder & itemFiles.Name
'retrieve file extension
sEndung = fso.GetExtensionName(sDateiname)
'check if the file extension is BAK
If UCase(sEndung) = "BAK" Then
'check if the database backups are older than 7 days
If DateDiff("d", itemFiles.DateCreated, Now()) >= 7 Then
'Delete any old BACKUP files to cleanup folder
fso.DeleteFile sDateiname
objFile.WriteLine "Datei gelöscht: " & sDateiname
End If
End If
Next
objFile.WriteLine "================================================================" & vbCrLf & vbCrLf
objFile.Close
Set objFile = Nothing
Set fso = Nothing
Set folder = Nothing
Set files = Nothing
test.cmd und alte_dateien_loeschen.vbs liegt im gleichen Ordner
@Echo off
set /a stunde=%time:~0,2%
set minute=%time:~3,2%
set sekunde=%time:~6,2%
cscript.exe alte_dateien_loeschen.vbs
del \\192.168.178.50\home\test\*.bak
@Echo off
copy /V "\\Eddies-PC\l$\Backup\SQL_Datenbank.bak" "\\192.168.178.50\home\test\SQL_Datenbank-%date%-%stunde%_%minute%_%sekunde%.bak"
hier der Aufruf als test.cmd, wobei jetzt alle *bak im Ordner \\192.168.178.50\home\test\ gelöscht werden, egal wie alt sie sind. Irgendwie auch klar mit dem del Befehl.
Das script legt das log an, aber es wird keine Aktion reingeschrieben.
Bin ein wenig verwirrt. Helft mir doch bitte auf die Sprünge.
Gruß
Eddie