Скопируйте файлы, содержащиеся в наборе подпапок, в один каталог

Проблема: Как в среде Windows можно скопировать все файлы, содержащиеся в группе подпапок, в один каталог?
Предположим, у вас есть N файлов любого типа, распределенных по ряду «вложенных» подпапок. Как восстановить все файлы, содержащиеся в различных подкаталогах, и сохранить их в одной папке?

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

Поэтому ниже мы предлагаем подход, основанный на использовании сценария VBS.

Чтобы использовать его, просто создайте новый файл с расширением .vbs. Щелкнув по нему правой кнопкой мыши и выбрав «Редактировать», вы можете редактировать его с помощью Блокнота Windows (в качестве альтернативы вы можете использовать любой другой текстовый редактор).


Внутри файла .vbs вам нужно будет вставить следующее: Set objFS = CreateObject(«Scripting.FileSystemObject»)
strFolder = «c:jobsdir»
strDestination = «c:tempdir»

если правильно(strFolder,1)»», то strFolder = strFolder & «»
если правильно(strDestination,1)»», то strDestination = strDestination & «»

Установить objFolder = objFS.GetFolder(strFolder)

Перейти (objFolder)

Sub Go(objDIR)
Если objDIR «System Volume Information» Тогда
Для каждой электронной папки в objDIR.SubFolders
Перейти в электронную папку
Следующий
Для каждого strFile в objDIR.Files
strFileName = strFile.Name
strExtension = objFS.GetExtensionName(strFile)
Если strExtension = «xls» Тогда
если objFS.FileExists(strDestination и strFileName), то
strFileName = objDIR.Name & «_» & strFileName
конец, если
objFS.CopyFile strFile, strDestination и strFileName
Конец, если
Следующий
Конец, если
Конец сабвуфера

В этот момент необходимо установить значения переменных strFolder (исходная папка) и strDestination (целевая папка).

Сценарий VBS скопирует содержимое всех подпапок в каталоге strFolder, а затем сохранит их в папке strDestination.

Как видите, сценарий затем использует рекурсивный алгоритм для «сканирования» всех подпапок, содержащихся в исходном каталоге.

Если файл уже существует в папке назначения, имя файла с таким же именем будет изменено путем префикса имени каталога, в котором он содержится (инструкция strFileName = objDIR.Name & «_» & strFileName).

Поскольку скрипт был разработан, из исходной папки будут скопированы только файлы с расширением xls. Очевидно, вы можете указать другое расширение или свободно настроить блок if (пример: If strExtension = «xls» или strExtension = «doc» Then). Если вы хотите скопировать все файлы любого типа, то if можно полностью исключить.


Чтобы начать операцию копирования, просто дважды щелкните файл .vbs.

Мы предлагаем использовать файл VBS только после того, как вы полностью поймете, как он работает. В любом случае предпочтительнее всегда делать хотя бы одну резервную копию данных, с которыми вы собираетесь работать.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован.