通过VBScript(VBS)使用通配符移动未知数量的文件

时间:2015-02-04 06:33:42

标签: vbscript

我试图使用通配符将一个或多个文件从一个目录移动到另一个目录:

dim filesys 
set filesys=CreateObject("Scripting.FileSystemObject") 
If filesys.FileExists("Z:\somepath\somefile_*_A.xlsm") Then 
    filesys.MoveFile "Z:\somepath\somefile_*_A.xlsm", "Z:\destpath\" 
End If 

它不起作用......

注意:

这些目录中还有其他文件我不想移动。我想移动使用通配符返回的所有文件。必须使用VBS。

链接:

VBscript to move files from one directory to another

https://msdn.microsoft.com/en-us/library/2wcf3ba6%28v=vs.84%29.aspx

2 个答案:

答案 0 :(得分:2)

Function ShowFolderList(folderspec)

Dim fso, f, f1, fc, s

Set fso = CreateObject("Scripting.FileSystemObject")

Set f = fso.GetFolder(folderspec)

Set fc = f.Files

For Each f1 in fc

  s = s & f1.name 

  s = s & "<BR>"

Next

ShowFolderList = s

End Function

这是来自帮助。 FSO中没有通配符。你必须自己做。因此,测试f1.name是否符合您的要求,然后复制该文件。

答案 1 :(得分:1)

您无法通过通配符查找文件imo。 你可以自己做检查

    For Each file In filessys.GetFolder("Z:\somepath").Files
        If( <do your checks on file.Name, might be a regex or a simple string compare>) Then            
            filesys.MoveFile file, "Z:\destpath\" 
        End If
    Next

根据您对文件格式的了解程度,只需检查rightmost characters是否总是&#34; _A.xlsm&#34;或者您可以使用regular expression