每天复制文件

时间:2015-07-16 06:48:09

标签: c# vb.net windows powershell batch-file

我想在服务器上每天将一些文件从一个文件夹复制到另一个文件夹。 每个文件将保留一周,然后删除。 这是实现这一目标的最佳方式? 感谢

3 个答案:

答案 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服务并在服务器上安装服务......你可以轻松地在新的逻辑中放入复制某些间隔文件的逻辑并删除它们...服务与用户帐户无关,因此如果服务器正在运行,那么您的服务就是....