1

Тема: VBS: Ошибка ИмяПапки_ИмяПапки_ИмяПапки_ИмяПапки_ИмяФайла

сделал простенький скрипт по переименованию файлов в подпапках в формат ИмяПапки_ИмяФайла, но почему-то иногда переименовывает так:
ИмяПапки_ИмяПапки_ИмяПапки_ИмяПапки_ИмяПапки_ИмяПапки_ИмяФайла
и выходит ошибка
---------------------------
Windows Script Host
---------------------------
Сценарий: переименование файлов в подпапках.vbs
Строка: 20
Символ: 7
Ошибка: Путь не найден
Код: 800A004C
Источник: Ошибка выполнения Microsoft VBScript

---------------------------
ОК   
---------------------------
вот код

papka = "f:\678\114_PANA2\"
 Set FSO = CreateObject("Scripting.FileSystemObject")

RecursiveFolderScan papka
Msgbox "ВСЕ!"

Sub RecursiveFolderScan(FolderPath)
    'Получаем объектную модель текущего каталога
    Set Folder = FSO.GetFolder(FolderPath)
 
    'Перебираем все файлы в текущем каталоге
    For Each File in Folder.Files
      FSO.MoveFile File, File.ParentFolder.Path+"\"+Folder.Name+"_"+File.Name     'переименовываем его в "ИмяПапки+ИмяФайла"
    Next
 
    'Перебираем все подкаталоги в каталоге
    For Each SubFolder in Folder.SubFolders
        RecursiveFolderScan(SubFolder.Path)
    Next
End Sub

2

Re: VBS: Ошибка ИмяПапки_ИмяПапки_ИмяПапки_ИмяПапки_ИмяФайла

потом сделал этот скрипт со счетчиком, чтоб нумеровал файлы с 1, но иногда начинает нумеровать с 100. Почему?


papka = "f:\678\114_PANA2\"
Set FSO = CreateObject("Scripting.FileSystemObject")

RecursiveFolderScan papka
Msgbox "ВСЕ!"

Sub RecursiveFolderScan(FolderPath)
i=0
    'Получаем объектную модель текущего каталога
    Set Folder = FSO.GetFolder(FolderPath)
 
    'Перебираем все файлы в текущем каталоге
    For Each File in Folder.Files
i=i+1
ExtensionName = FSO.GetExtensionName(File)
      FSO.MoveFile File, File.ParentFolder.Path&"\"&Folder.Name&"_"&i&"."&ExtensionName     'переименовываем его в "ИмяПапки+счетчик"
    Next
 
    'Перебираем все подкаталоги в каталоге
    For Each SubFolder in Folder.SubFolders
i=0
        RecursiveFolderScan(SubFolder.Path)
    Next
End Sub

3

Re: VBS: Ошибка ИмяПапки_ИмяПапки_ИмяПапки_ИмяПапки_ИмяФайла

File.Name = Folder.Name & "_" & File.Name

но почему-то иногда переименовывает так:

ИмяПапки_ИмяПапки_ИмяПапки_ИмяПапки_ИмяПапки_ИмяПапки_ИмяФайла

Полагаю потому, что перемещение файла (вместо переименования) приводит к тому, что этот файл воспринимается как новый и может вновь попасть в обработку «For Each File…».

4

Re: VBS: Ошибка ИмяПапки_ИмяПапки_ИмяПапки_ИмяПапки_ИмяФайла

А почему же тогда предыдущие и последующие папки нормально обрабатываются? В скрипте ошибок нет?

5

Re: VBS: Ошибка ИмяПапки_ИмяПапки_ИмяПапки_ИмяПапки_ИмяФайла

Создавайте «нуль-копию» Вашей структуры папок и файлов, на которых происходит указанная ошибка, пакуйте в архив, выкладывайте на RGhost, ссылку — сюда. Посмотрим, сравним.

6

Re: VBS: Ошибка ИмяПапки_ИмяПапки_ИмяПапки_ИмяПапки_ИмяФайла

вот тут посмотри