2016-08-12 47 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