我想在服务器上每天将一些文件从一个文件夹复制到另一个文件夹。 每个文件将保留一周,然后删除。 这是实现这一目标的最佳方式? 感谢
答案 0 :(得分:4)
我建议在脚本中使用RoboCopy或使用GUI(与Windows任务计划程序一起使用)。
或许你想要走Windows Service路线,虽然我个人认为这是一个简单的复制工作,但它有点矫枉过正。
(一个广泛问题的广泛答案:-))
答案 1 :(得分:0)
我为此创建了一个VBS:
Option Explicit
Dim oFso
Dim sStartPath1, sStartPath2, sStartPath3, sZielPath1
Dim sDatenAlter1, sDatenAlter2, sDatenAlter3
Dim sLogFile
Dim oTxtStm
Const ForAppending = 8
sStartPath1 = "C:\PTC\PDFs"
sDatenAlter1 = 2
sStartPath2 = "C:\PTC\DXFs"
sDatenAlter2 = 2
sStartPath3 = "C:\PTC\STEPs"
sDatenAlter3 = 2
sZielPath1 = "C:\PTC\Old_Files\"
sLogFile = "C:\PTC\Old_Files\Logfile_Automove.txt"
Set oFso = CreateObject("Scripting.FileSystemObject")
Set oTxtStm = oFso.OpenTextFile(sLogFile, 8, True)
oTxtStm.WriteLine " "
oTxtStm.WriteLine "--------------- Beginn, " & Now & " ---------------"
oTxtStm.WriteLine " "
If oFso.FolderExists(sStartPath1) Then
Call ReadFolder(sStartPath1, sDatenAlter1)
Else
oTxtStm.WriteLine "Keine Dateien gefunden"
End If
If oFso.FolderExists(sStartPath2) Then
Call ReadFolder(sStartPath2, sDatenAlter2)
Else
oTxtStm.WriteLine "Keine Dateien gefunden"
End If
If oFso.FolderExists(sStartPath3) Then
Call ReadFolder(sStartPath3, sDatenAlter3)
Else
oTxtStm.WriteLine "Keine Dateien gefunden"
End If
oTxtStm.WriteLine " "
oTxtStm.WriteLine "--------------- Ende, " & Now & " ---------------"
oTxtStm.WriteLine " "
oTxtStm.Close
Set oFso = Nothing
Set oTxtStm = Nothing
'MsgBox "Fertig, Logdatei wurde gespeichert unter: " & vbNewLine & sLogFile
Function ReadFolder(sPath, sAlter)
Dim oFld 'nimmt das Ordnerobjekt (Folder) auf
Dim oF 'nimmt das Dateiobjekt (File) auf
Dim nFCount, nErrNum , nFCount1, nFCount2
Dim alterfile 'Bestimmt das Alter der Datei
Dim alterfolder 'Bestimmt das Alter des Ordners
Dim size ' Bestimmt die grösse des Ordners
On Error Resume Next
'hier wird Fehler 70 ausgelöst, falls kein Zugriff besteht
'Ohne Zugriff ist ein Auflisten der Files natürlich nicht möglich
nFCount = oFso.GetFolder(sPath).Files.Count
nErrNum = Err.Number
Err.Clear
On Error Goto 0
If nErrNum = 0 Then
'MsgBox "Ordner: " & sPath & " - Anzahl Dateien: " & nFCount
For Each oF In oFso.GetFolder(sPath).Files
'... hier die Anweisung zum verschieben der Dateien
On Error Resume Next
alterfile = 0
alterfile = alterfile + DateDiff("d", oF.DateCreated, Now)
If alterfile > sAlter Then
oTxtStm.WriteLine "Die Datei : (" & oF.Path & ") --- Wurde verschoben"
oFso.CopyFile oF.Path, sZielPath1 & oF.Name, true
oFso.deletefile oF.path, True
Else
'oTxtStm.WriteLine "Die Datei : " & oF.Path & " erfüllt die Kriterien nicht, um verschoben zu werden."
End If
Next
ElseIf nErrNum = 70 Then
oTxtStm.WriteLine "*** Fehler: " & sPath & " - Zugriff verweigert -" 'Logeintrag bei Fehler 70, falls erwünscht
Else
oTxtStm.WriteLine "*** Fehler: " & sPath & " - Fehlernummer: " & Err.Number & " -" 'Logeintrag bei sonst. Fehler, falls erwünscht
End If
End Function
路径 sStartPath 中的所有旧文件 sDatenAlter 将移至 sZielPath1 。
LogFile将以 sLogFile 编写。
答案 2 :(得分:-1)
我建议你用你想要的语言制作一个新的项目/ windows服务并在服务器上安装服务......你可以轻松地在新的逻辑中放入复制某些间隔文件的逻辑并删除它们...服务与用户帐户无关,因此如果服务器正在运行,那么您的服务就是....