带有日期和通配符的文件复制



该文件称为:"Data_20170123_(随机数).csv"。 日期每天都在变化,数字是随机的。 我正在尝试创建一个批处理文件,该文件将执行文件复制到另一个目录并通过取出日期和随机数来重命名它。 星号在第 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:TempData_" & ts & "_*.csv", "C:LogsData.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:TempData_" & ts & "_11.csv", "C:LogsData.csv", True
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:LogsData.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 对象,因此也不需要它,但是我将其保留,以防它是您尚未显示的代码的一部分。

最新更新