2017-01-23 5 views
1

Файл называется: «Data_20170123_ (случайное число) .csv». Дата меняется каждый день, а число - произвольно. Я пытаюсь создать пакетный файл, который будет выполнять копирование файла в другой каталог и переименовывать его, выбирая дату и случайное число. Asterik не работает на линии 9.FileCopy с датой и шаблоном

Могу ли я использовать строку 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 

ответ

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, поэтому он тоже не нужен, но я оставил его в покое, если это часть кода, который вы не показывали.

+1

спасибо большое Дэйву, он работал как шарм. –

 Смежные вопросы

  • Нет связанных вопросов^_^