注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

曾国藩的博客

 
 
 

日志

 
 

使用vbs自动备份  

2015-11-19 16:23:21|  分类: 脚本/跳板/效率/ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
http://blog.chinaunix.net/uid-419645-id-1759195.html
上面介绍了一个使用批处理进行自动备份的例子。
再共享一个使用vbs例子。具有以下功能:
1,自动把目标机器的文件夹映射为NetDrive。
2,自动copy目标机器的文件夹到指定目录。
3,每次这行的动作输出到log文件。
 

'----------------------------------------------------------------
' backup
'----------------------------------------------------------------
Option Explicit

Dim LogFile            
Dim ExecCommand        
Dim UserName        
Dim Password        
Dim BackupFolderPath        
Dim BackupPath            
Dim time_str        
Dim WorkShare        
Dim MountDriveName    
Dim ShareUser        
Dim SharePassword    
Dim ret                
Dim message            

LogFile            = "■backupCMD.vbs.log"    
UserName        = "Demo"
Password        = ""
'ARSServer        = WScript.Arguments(0)

BackupFolderPath        = "C:\backup\"
WorkShare        = "\\server.com\work_share"

MountDriveName    = "M:"
ShareUser        = "domain\username"
SharePassword    = "password"

time_str        = getTimeStr(Now)
BackupPath        = BackupFolderPath & time_str & "\"


ret = ConnectNetDrive(MountDriveName , WorkShare , ShareUser , SharePassword)
If ret = 0 Or ret = 2 Then
    'LogOutput
    message = Now & " " &"-----ConnectNetDrive成功! Backup開始。"
    Call Logging(LogFile,message)

    
    'ExecCommand    = "xcopy /E/Y """&WorkShare&""" """&BackupPath&""" " 
    'ret = RunCommand(ExecCommand)

    ret = CopyFolder(WorkShare,BackupPath)
    If ret = 0 Then
        message = Now & " " & WorkShare &" Backup成功:"&ret
    Else
        message = Now & " " & WorkShare &" Backup失敗:"&ret
    End If
    
    'LogOutput
    Call Logging(LogFile,message)
    
Else
    'LogOutput
    message = Now & " " & WorkShare &"ConnectNetDrive失敗:" & ret
    Call Logging(LogFile,message)
End If
'------------------------------------------------------------------
' CopyFolder
'------------------------------------------------------------------
Function CopyFolder(strSource,strDestination)
    On Error Resume Next

    Const OverWriteFiles = True
    Dim fso            ' FileSystemObject
    Dim ots            ' TextStreamObject
    Dim objFolder

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set objFolder = fso.CreateFolder(strDestination)
    fso.CopyFolder strSource, strDestination , OverWriteFiles
    CopyFolder = Err.Number
    ' ErrorHandling
    If CopyFolder = 0 Then
        Exit Function
    Else
        CopyFolder = -1
        Exit Function
    End If
End Function
'------------------------------------------------------------------
' RunCommand,exe,xcopy,etc
'------------------------------------------------------------------
Function RunCommand(cmdstr)
    On Error Resume Next
    
    Dim so    ' WSHShell Object
    Set so = WScript.CreateObject("WScript.Shell")
    RunCommand = so.Run(cmdstr, 1, True)
    
    ' ErrorHandling
    If Err.Number = 0 Then
        Exit Function
    Else
        RunCommand = -1
        Exit Function
    End If
End Function

'--------------------------------------------------
'ConnectNetDrive
'--------------------------------------------------
Function ConnectNetDrive(strDrive,strShare,strUserName,strPassword)
    On Error Resume Next
    Dim WshNetwork    
    Set WshNetwork = CreateObject("WScript.Network")
    WshNetwork.MapNetworkDrive strDrive,strShare,False,strUserName,strPassword

    Select case Err.Number
    case 0
        'success
        ConnectNetDrive = 0
    case -2147023570
        
        ConnectNetDrive = 1
    case -2147024811
        
        ConnectNetDrive = 2
    case -2147024829
        
        ConnectNetDrive = 3
    case -2147024843
        
        ConnectNetDrive = 4
    case else
        
        ConnectNetDrive = 9
    end select
    Exit Function
End Function

'------------------------------------------------------------------
' getTimeStr
'------------------------------------------------------------------
Function getTimeStr(objTime)
    Dim strYear
    Dim strMonth
    Dim strDay
    Dim strHour
    Dim strMin
    Dim strSec
    
    strYear        = Year(Now)
    strMonth    = Month(Now)
    strDay        = Day(Now)
    strHour        = Hour(Now)
    strMin        = Minute(Now)
    strSec        = Second(Now)
    
    If LEN(strMonth) = 1 Then
        strMonth = "0" & strMonth
    End If
    
    If Len(strDay) = 1 Then
        strDay = "0" & strDay
    End If
    
    If Len(strHour) = 1 Then
        strHour = "0" & strHour
    End If

    If Len(strMin) = 1 Then
        strMin = "0" & strMin
    End If

    If Len(strSec) = 1 Then
        strSec = "0" & strSec
    End If

    getTimeStr = strYear & "-" & strMonth & "-" & strDay & "_" & strHour & "-" & strMin & "-" & strSec
End Function

'------------------------------------------------------------------
' Logging
'------------------------------------------------------------------
Sub Logging(logfilepath , message)
    On Error Resume Next
    Dim fso            
    Dim ots            
    Dim try_count    
    
    Const max_retry    = 20    
    Const sleeptime = 100    
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    
    For try_count = 1 To max_retry
        Set ots = fso.OpenTextFile(logfilepath, 8, True)
        
        If Err.Number = 0 Then
            
            ots.WriteLine message
            ots.Close
            WScript.Echo message
            If Err.Number <> 0 Then
                
            End If
            Exit Sub
        End If
        Err.Clear
        WScript.Sleep(sleeptime)
    Next
    
    
    Exit Sub
End Sub

  评论这张
 
阅读(191)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018