Перемещение и переименование файлов с использованием 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)

Другие вопросы по тегам