Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用VBScript排除robocopy中的文件_Vbscript - Fatal编程技术网

使用VBScript排除robocopy中的文件

使用VBScript排除robocopy中的文件,vbscript,Vbscript,我有下面我正在使用的Robocopy脚本。我想知道的是,有没有一种方法可以在镜像操作期间排除所有以com_uu开头的文件,而不是特定的文件。 非常感谢您的建议 Const ROBOCOPY_PARMS_MIRROR = "/mir /r:1 /w:3 /np /xa:SH /tee /np" Const ROBOCOPY_PARMS_EXCLUDE_DIR = "bin" Const ROBOCOPY_PARMS_EXCLUDE_FILE = "com_.txt" Const sourcePat

我有下面我正在使用的Robocopy脚本。我想知道的是,有没有一种方法可以在镜像操作期间排除所有以com_uu开头的文件,而不是特定的文件。 非常感谢您的建议

Const ROBOCOPY_PARMS_MIRROR = "/mir /r:1 /w:3 /np /xa:SH /tee /np"
Const ROBOCOPY_PARMS_EXCLUDE_DIR = "bin"
Const ROBOCOPY_PARMS_EXCLUDE_FILE = "com_.txt"
Const sourcePath = "C:\copy1"
Const destinationPath = "C:\copy"
roboCopyParms = ROBOCOPY_PARMS_MIRROR 
Set WshNetwork = WScript.CreateObject("WScript.Network")
Set WshShell = WScript.CreateObject("WScript.Shell")
cmd = "robocopy " & sourcePath & " " & destinationPath & " " & roboCopyParms  & " /xd " & ROBOCOPY_PARMS_EXCLUDE_DIR & " /xf " & ROBOCOPY_PARMS_EXCLUDE_FILE
ret = WshShell.Run(cmd, 0, true) 
WScript.Echo ret

谢谢

解决方法是创建您自己的robocopy脚本:

Dim fso
Set fso = WScript.CreateObject("Scripting.Filesystemobject")

RoboCopy "C:\copy","C:\copy1"

Function RoboCopy(source,dest)

  Set sourceFolder = fso.GetFolder(source)

  If Not(fso.FolderExists(dest)) Then
    fso.CreateFolder(dest)
  End If

  For Each file In sourceFolder.Files
    If Left(file.Name,3)<>"com" Then
      fso.CopyFile file.Path,dest & "\" & file.Name
    End If
  Next

  For Each subfolder In sourceFolder.SubFolders
    RoboCopy source & "\" & subfolder.Name,dest & "\" & subfolder.Name
  Next

End Function
Dim fso
设置fso=WScript.CreateObject(“Scripting.Filesystemobject”)
机器人复制“C:\copy”、“C:\copy1”
功能机器人复制(源、目标)
Set sourceFolder=fso.GetFolder(源)
如果不是(fso.FolderExists(dest)),则
fso.CreateFolder(dest)
如果结束
对于sourceFolder.Files中的每个文件
如果左(file.Name,3)“com”,则
fso.CopyFile file.Path,dest&“\”file.Name
如果结束
下一个
对于sourceFolder.SubFolders中的每个子文件夹
RoboCopy源&“\”子文件夹.Name,目标&“\”子文件夹.Name
下一个
端函数

(尝试)使用
/XF ExFile排除与给定名称、路径或通配符匹配的文件。
选项可以在脚本中演示如何执行此操作。。我不确定您的意思。得到了答案。。我们需要做的就是将文件名设为com_*然后排除所有文件。因为您的命令行已经为/XF准备好了,使用
Const ROBOCOPY\u PARMS\u EXCLUDE\u FILE=“com\u**”
(标记通配符)可以解决您的问题(未测试!)。