2016-08-12 145 views
0

我有一個用於早期工作但現在不工作的備份rc的VBS腳本。用於Robocopy備份的VBS腳本

StrDatum = Day(Now) & "." & Month(Now) & "." & Year(Now) 
Const ForReading = 1 
Const ForWriting = 2 
Const ForAppending = 8 
Const OverwriteExisting = True 
StrRobocopyOptions= "/E /B /R:0 /W:0 /V /NP" 
StrConfigFilePath = "C:\Tools\Backup\backupJobs.cfg" 
StrRobocopyExePath = "C:\Program Files\Windows Resource Kits\Tools\robocopy.exe" 

strServerBackupPath = "\\midaserver\KNJIGOVODSTVO" 
StrServweLogPath = "\\midaserver\KNJIGOVODSTVO\logs" 
strComputer = "." 

Set objShell = CreateObject ("wscript.shell") 
Set objWMIService = GetObject("winmgmts:" _ 
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 

Set colComputer = objWMIService.ExecQuery _ 
    ("Select * from Win32_ComputerSystem") 

For Each objComputer in colComputer 
    strComputerName = objComputer.Caption 
Next 




Set objFSO = CreateObject ("Scripting.FileSystemObject") 
Set objReadConfFile = objFSO.OpenTextFile (StrConfigFilePath,ForReading) 
"Set objRobocopyStatusWriter = objFSO.OpenTextFile (strServerBackupPath & "\\" & strComputerName & "\copy_status_tst.log",ForWriting,OverwriteExisting) 
objRobocopyStatusWriter.Write "Started > " & StrDatum & " > " 
Do Until (objReadConfFile.AtEndOfStream = True) 

strSourceFolder = Trim(objReadConfFile.ReadLine) 
strCommand = StrRobocopyExePath & " " & StrRobocopyOptions & " " & """" & strSourceFolder & """" & " " & """" & strServerBackupPath & "\" & strComputerName & "\" & imeDira(strSourceFolder) & """" 

Set objRobocopyLogWriter = objFSO.OpenTextFile (StrServweLogPath & "\" & strCompuerName & "-" & imeDira(strSourceFolder) & ".log" ,ForWriting,OverwriteExisting) 

Set objScriptExec = objShell.Exec (strCommand) 

    Do While Not objScriptExec.StdOut.AtEndOfStream 
     strLinija = objScriptExec.StdOut.ReadLine 
     objRobocopyLogWriter.WriteLine strLinija 
    loop 

strCommand = "" 
objRobocopyLogWriter.Close 

Loop 
objRobocopyStatusWriter.Write "Finished" 
objRobocopyStatusWriter.Close 
Function imeDira(putanja) 
    arrSubIme = Split(putanja,"\") 
    imeDira = arrSubIme(UBound(arrSubIme)) 
End Function 

當我運行它,appers下一個錯誤:

腳本:\ mida5 \ C $ \備份\ BackupiListFolders.vbs 行:29 字符:1 錯誤:路徑找不到 代碼: 800A004C 來源:Microsoft VBScript運行時錯誤

+0

使用的(https://technet.microsoft.com/de-de/library/cc733145%28v=ws.10%29.aspx),而不是試圖模仿它的['/ log'參數] 。 –

+0

哼哼,怎麼,我不明白你? –

+0

'robocopy'可以自行創建日誌(請參閱我鏈接到的文檔)。你沒有理由手動完成。至於你得到的錯誤信息:腳本找不到配置文件'C:\ Tools \ Backup \ backupJobs.cfg'。 –

回答

0

robocopy爲您做日誌記錄。

Function qq(str) 
    qq = """" & str & """" 
End Function 

Set fso = CreateObject("Scripting.FileSystemObject") 
Set sh = CreateObject("WScript.Shell") 

src = "C:\source\folder" 
dst = "\\server\share\target\folder" 

logfile = "C:\path\to\your.log" 

cmd = "robocopy.exe " & qq(src) & " " & qq(dst) & _ 
     " /e /b /r:0 /w:0 /v /np /log:" & qq(logfile) 

status = sh.Run(cmd, 0, True) 
If status = 0 Then 
    WScript.Echo "Backup complete." 
Else 
    WScript.Echo "Backup failed." 
End If