带有日期和通配符的FileCopy

时间:2017-01-23 23:18:47

标签: vbscript

该文件名为:“Data_20170123_(随机数).csv”。日期每天都在变化,而且数字是随机的。我正在尝试创建一个批处理文件,它将执行文件复制到另一个目录,并通过取出日期和随机数重命名它。 asterik没有在第9行工作。

我可以使用Left字符串或InStr来执行CopyFile吗?

我提前感谢您的帮助。我的代码看起来像这样。

On Error Resume Next
Dim fso, ts
Dim WshShell

Set fso = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")
ts = timeStamp

fso.CopyFile "C:\Temp\Data_" & ts & "_*.csv", "C:\Logs\Data.csv", True

'======
Function timeStamp() 
    timeStamp = Year(Now) & _
                Right("0" & Month(Now), 2)  & _
                Right("0" & Day(Now), 2)
End Function
'====== 
'this does work but it's using the random number so I need a wildcard?
'fso.CopyFile "C:\Temp\Data_" & ts & "_11.csv", "C:\Logs\Data.csv", True

1 个答案:

答案 0 :(得分:2)

Dim fso, ts, folder, file
Dim WshShell

Set fso = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")
ts = timeStamp
Set folder = ofso.GetFolder("C:\temp")
For Each file in folder.Files
    If Left(file.name, 14) = "Data_" & ts & "_" And Right(file.Name, 4) = ".csv" Then
        fso.CopyFile file.Path, "C:\Logs\Data.csv",True
    End If
Next

Function timeStamp() 
    timeStamp = Year(Now) & _
    Right("0" & Month(Now),2)  & _
    Right("0" & Day(Now),2)
End Function

上面的代码检查给定文件夹中的每个文件,并匹配文件名的已知部分。匹配的任何文件都将复制到具有特定名称的目标文件夹。复制完成后你可以使用Exit For来加速代码 - 因为你只复制到一个文件名我假设只有一个文件要复制,所以一旦你退出循环找到合适的档案。

你根本就没有使用你的WshShell对象,所以也不需要它,但是我已经不管它了,以防它是你未展示的代码的一部分。