Перемещение и переименование файлов с использованием VBScript
Как выяснилось, меня теперь просят изменить скрипт, чтобы он доставлял каждый соответствующий файл в свою собственную папку. Все файлы будут находиться в одной папке на AS400 и будут перемещаться в разные папки на отдельном компьютере. Мой вопрос, могу ли я получить что-то вроде:
Dim fso,f,strPathBuild
Set fso=CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder("Z:\SOURCE")
For Each file In f.Files
if left(UCase(file.Name),1) = "A" then strPathBuild = Replace(file, "Z:\SOURCE", "Y:\DESTINATION1")
if left(UCase(file.Name),1) = "A" then strPathBuild = Replace(strPathBuild,"A","ACKNOWLEDGE")
if left(UCase(file.Name),1) = "S" then strPathBuild = Replace(file, "Z:\SOURCE", "Y:\DESTINATION2")
if left(UCase(file.Name),1) = "S" then strPathBuild = Replace(strPathBuild,"S","SHIPMENT")
fso.MoveFile file, strPathBuild
Next
Set f = Nothing
Set fso = Nothing
Я извиняюсь, но, похоже, премьер-министр любит воздерживаться от предоставления мне всех требований сразу.
2 ответа
В ответ на ваш комментарий:
Dim fso,f,strPathBuild
Set fso=CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder("Z:\SOURCE")
For Each file In f.Files
strPathBuild = Replace(file, "Z:\SOURCE", "Y:\DESTINATION")
if left(UCase(file.Name),1) = "A" then strPathBuild = Replace(strPathBuild,"ACK","ACKNOWLEDGE")
fso.MoveFile file, strPathBuild
Next
Set f = Nothing
Set fso = Nothing
Кроме того, как говорит Алекс К, вы хотите начать следить за чувствительностью к регистру имен файлов. (Вот почему я включил функцию UCase)
Случай пути в перечислении, вероятно, не соответствует Replace
критерий поиска.
Заменить без учета регистра (с началом в символе 1, заменить 1 раз);
strPathBuild = Replace(file, "Z:\SOURCE", "Y:\DESTINATION", 1, 1, vbTextCompare)