将Robocopy命令转换为VB脚本

时间:2013-10-25 07:29:37

标签: vbscript cmd robocopy

我以前在Robocopy中使用了一行,允许我复制文件夹中的所有文件夹包含父文件夹,IE浏览Blackberry文件夹中的所有文件/文件夹包含Blackberry文件夹本身,否则没有它只会复制其中的文件并将其转储到备份位置......

使用的代码是;

for %%a in ("%source%") do SET destination="Backups\%date%\%%~nxa"

现在我用VB脚本了; sSource = Chr(34)& objFolder.self.Path& Chr(34)& “”

那么我如何使用VB脚本(仍然调用Robocopy)使用上面的内容,以便在备份时它还包括PARENT文件夹?

这是我的代码; Converting Robocopy Batch To VB Script

提前致谢!

编辑:我的脚本文件的当前内容;

Dim BrowseBackupSource

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(0, "Please browse to the folder you would like to backup.", 1, "C:\")
If objFolder Is Nothing Then
    Wscript.Quit
End If
wscript.Echo "folder: " & objFolder.title & " Path: " & objFolder.self.path

Dim BrowseBackupLocation

Set objShell = CreateObject("Shell.Application")
Set objDest = objShell.BrowseForFolder(0, "Please browse to the folder you would like to save the backup to.", 1, "C:\")
If objDest Is Nothing Then
    Wscript.Quit
End If
wscript.Echo "folder: " & objDest.title & " Path: " & objDest.self.path

sCmd = "%windir%\System32\Robocopy.exe "
sDate = Day(Now) & "-" & Month(Now) & "-" & Year(Now)
sTime = Hour(Now) & "-" & Minute(Now) & "-" & Second(Now)
sSource = Chr(34) & objFolder.self.Path & Chr(34) & " "
sDestination = Chr(34) & objDest.self.Path & Chr(34) & " "
sSwitches = "/E /Log:"& sTime &".txt"

Set objShell = CreateObject("Wscript.Shell")
objShell.Run(sCmd & sSource & sDestination & sSwitches)

2 个答案:

答案 0 :(得分:0)

如果要创建特定文件夹的副本以进行备份,为什么不简单地将该文件夹复制到备份目标并完成备份?

Set fso = CreateObject("Scripting.FileSystemObject")
Set app = CreateObject("Shell.Application")

dst = "C:\backups\" & Year(Now) & "\" & Month(Now) & "\" & Day(Now)
CreatePath dst

Set fldr = app.BrowseForFolder(0, "Example", 1, "c:\Programs")
fso.CopyFolder fldr.Self.Path, dst & "\", True

Sub CreatePath(p)
  If Not fso.FolderExists(p) Then
    CreatePath fso.GetParentFolderName(p)
    fso.CreateFolder p
  End If
End Sub

答案 1 :(得分:0)

好吧,如果您需要将父文件夹的路径设置为副本的根目录:

dim parentFolderPath

    parentFolderPath = WScript.CreateObject("Scripting.FileSystemObject").GetFolder(objFolder.self.Path).ParentFolder.Path

修改

您需要将所选源目录的名称添加到所选目标的路径中,以便

Set fso = WScript.CreateObject("Scripting.FileSystemObject")
sSourceFolderName = fso.GetFolder(objFolder.self.Path).Name
sDestination = Chr(34) & objDest.self.Path & "\" & sSourceFolderName & Chr(34)

Robocopy将处理目标目录创建