VBScript将以XXX或YYY或ZZZ开头的文件从目录A复制到目录B.

时间:2014-10-21 22:27:36

标签: vbscript directory copy filenames

我几乎没有关于vbs脚本的知识但是我已经设法凑合了一些将文件从一个目录复制到另一个目录并删除目录中的文件但是我无法找到任何具体的东西我是什么现在之后。

我正在编写一个vbs脚本来执行以下操作 - 从目录A到目录B将以XXX或YYY或ZZZ开头的文件复制到目录B.

我已经浏览了一下,无法找到我正在寻找的东西,它们看起来都太复杂了,无法满足我的需要,并涉及最新日期或解析文件中的字符串等。

我很确定这很简单但是如上所述,我真的不知道我在做什么,所以任何帮助都会非常感激。

以下是我使用进度条将所有文件从一个目录复制到另一个目录的内容,因此对此进行修改会很好。

Const FOF_CREATEPROGRESSDLG = &H0&

' copy test 1 to test 2
strTargetFolder = "C:\test2\" 
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.NameSpace(strTargetFolder) 
objFolder.CopyHere "C:\test1\*.*", FOF_CREATEPROGRESSDLG

2 个答案:

答案 0 :(得分:0)

目前还不确定如何在一个大的进度指标中得到这个。目前,它将显示每个文件的进度。

Const FOF_CREATEPROGRESSDLG = &H0&

strSourceFolder = "C:\test1\"
strTargetFolder = "C:\test2\" 

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objSourceFolder = objFSO.GetFolder(strSourceFolder)
Set objFiles = objSourceFolder.Files

Set objShell = CreateObject("Shell.Application")
Set objTargetFolder = objShell.NameSpace(strTargetFolder)

For Each objSingleFile in objFiles
    If (InStr(1,objSingleFile.Name,"xxx",vbTextCompare) = 1) Or _
            (InStr(1,objSingleFile.Name,"yyy",vbTextCompare) = 1) Or _
            (InStr(1,objSingleFile.Name,"zzz",vbTextCompare) = 1) Then
        ' The file name starts with one the flagged keywords
        objTargetFolder.CopyHere objSingleFile.Path, FOF_CREATEPROGRESSDLG
    End If
Next

保留用于脚本末尾使用的实际复制过程的strTargetFolder代码。使用FileSystemObject objFSO,我们遍历目录c:\test1的所有文件。然后检查每个文件名以查看它是否以3个不同的字符串中的任何一个开头。使用vbTextCompare进行比较,基本上它运行不区分大小写。如果找到匹配项,则使用原始代码将文件复制到目标目录并继续。

目前,这不会以递归方式导航文件的所有子文件夹,但您可以为此创建递归函数。

答案 1 :(得分:0)

FileSystemObject与正则表达式结合使用:

src = "C:\test1"
dst = "C:\test2" 

Set fso = CreateObject("Scripting.FileSystemObject")

Set re = New RegExp
re.Pattern = "^(XXX|YYY|ZZZ)"

For Each f In fso.GetFolder(src).Files
  If re.Test(f.Name) Then f.Copy dst & "\"
Next