Переименование и перемещение папок с помощью VB - PullRequest
1 голос
/ 26 мая 2011

У меня есть следующий скрипт, который отлично работает, если мне нужно переименовать файлы в папке, но теперь я хочу переместить и переименовать папки с одного подключенного диска на другой подключенный диск.Может кто-нибудь помочь мне изменить скрипт для этого?Я плохо знаком с VB, так что извините, если я не могу разобраться с этим, но мне потребовалось некоторое время, чтобы понять это, и теперь я не уверен, как изменить этот скрипт.Заранее спасибо!

Папки по умолчанию помечены как A.1234, A.5678 и т. Д., И им всегда будет присвоен другой номер.Я буду хранить номера на этикетке, так как они являются номерами PO.Итак, мой конечный результат - Ack ~ 1234, Ack ~ 5678 и так далее.

Dim fso, f, f1, fc, s Set 
fso = CreateObject("Scripting.FileSystemObject") 
Set f = fso.GetFolder("Y:\Test") 
Set fc = f.Files 
For Each f1 in fc 
    f1.move f1.ParentFolder & "\" & replace(f1.Name, "A.", "Ack~")

Снова эти папки существуют в корне подключенного диска и должны перейти на другой подключенный диск с новыми именами.Если вам нужна дополнительная информация, пожалуйста, не стесняйтесь спрашивать.

ОБНОВЛЕНИЕ

Я изменил приведенный ниже скрипт, чтобы дать представление о том, что я собираюсь сделать.

Dim fso, objFol 
Set fso = CreateObject("Scripting.FileSystemObject") 
Set objFol = fso.GetFolder("Z:\") 
Set objFolders = objFol.Folders 
For each folder in objFolders 
    fso.Movefolder folder, "Y:\" & Replace(fso.Name, "A.", "Ack~") 
Next 

Это дает мне ошибку, утверждая, что она не поддерживает "Папка".На диске Z будет любое количество папок, и мне нужно переместить их все на диск Y.Извините, если я не объяснил должным образом в предыдущем посте.

1 Ответ

1 голос
/ 26 мая 2011

Команда перемещения принимает строку, для которой вы предоставляете родительскую папку файла, поэтому файл не перемещается. Я думаю, этого будет достаточно, чтобы указать другое местоположение папки. Например:

Dim fso, f, f1, fc, s
Set fso = CreateObject("Scripting.FileSystemObject") 
Set f = fso.GetFolder("Y:\Test") 
Set fc = f.Files 

For Each f1 in fc 
    f1.move "Z:\TargetFolder\" & replace(f1.Name, "A.", "Ack~")

Примечание: я не проверял это, но если есть проблемы, просто спросите

Дополнительные материалы после обновления:

Следующий код позволит вам перемещать папки и выполнять необходимые замены в строке имени папки.

Dim fso, objFol, objMoveFol, strPathBuild

Set fso = CreateObject("Scripting.FileSystemObject")
Set objFol = fso.GetFolder("Y:\Test")

For Each objMoveFol In objFol.SubFolders

    'Replace the root folder locations in the path
    strPathBuild = Replace(objMoveFol, "Y:\Test", "Z:\TargetFolder\")

    'Do the required other fiddle
    strPathBuild = Replace(strPathBuild, "A.", "Ack~")

    fso.Movefolder objMoveFol, strPathBuild 

Next

Удостоверьтесь, что вы действительно осторожны с подобными вещами, потому что неправильно поступить неправильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...