2015-02-04 3 views
0

Я пытаюсь переместить один или несколько файлов из одной директории в другую директорию, используя подстановочные:Переместить неизвестное количество файлов, используя подстановочные с помощью VBScript (VBS)

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

+0

И вопрос в том .... –

+0

отредактировал это сообщение: оно не работает – mountainclimber

+1

'FileExists' не разрешает использование подстановочных знаков. Вы можете написать свою собственную версию или удалить тест на существование файла и обработать возможную ошибку в 'MoveFile' –

ответ

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 вашим требованиям, затем скопируйте этот файл.

+0

Привет, спасибо. Глядя на это сейчас. Не могли бы вы поделиться со мной, что «Помощь» вы имеете в виду? Благодаря! – mountainclimber

+2

Вы ссылаетесь на помощь в своем посте. Он доступен в виде файла справки. Вы можете загрузить весь сайт, если хотите. Я имею его в SDK Windows Vista (каждая версия включает все предыдущие версии, то есть она только растет). Я отредактирую свой ответ. – Serenity

1

Вы не можете передать уайлдкард в findfiles имо. Вы могли бы сделать сами проверить

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, если они всегда «_A.xlsm» или вы можете использовать regular expression

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