Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - ASP и VBScript

Страница: 1 |

 

  Вопрос: VBS: переим-е файлов в подпапках ИмяПодпапки+ИмяФа Добавлено: 15.02.12 16:27  

Автор вопроса:  griha09

Вот сделал скрипт для переименования файлов в подпапках по схеме ИмяПодпапки+ИмяФайла

Код:

papka = "c:\temp\"
 
Dim  FilePath
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder(papka)
'просматриваем папку с файлами
For Each SubFolder In Folder.SubFolders
For Each File In SubFolder.Files
FilePath = FSO.BuildPath(Folder,SubFolder.Name)
FSO.MoveFile File, FilePath+"\"+SubFolder.Name+"_"+File.Name    

Next
Next
Msgbox "ВСЕ!"

Вначале переименовывает нормально Mitsubishi-1_Eclipse.jpg, а через пару папок появляется такая х*рня Opel-1_Opel-1_Opel-1_Opel-1_Opel-1_Opel-1_Opel-1_Opel-1_Opel-1_Opel-1_Opel-1_Opel-1_Opel-1_Opel-1_Opel-1_Opel-1_
Opel-1_Opel-1_Opel-1_Opel-1_Opel-1_Opel-1_Opel-1_Opel-1_Opel-1_Opel-1_Opel-1_Opel-1_Opel-1_1.jpg
и вылетает ошибка:
Ошибка: Путь не найден
Код: 800А004С
Строка:10
В чем проблема?
Обработка идет на один уровень подкаталогов. А как сделать чтоб работала на все уровни вложенности?

Ответить

  Ответы Всего ответов: 2  

Номер ответа: 1
Автор ответа:
 AxeL



ICQ: 264730390 

Вопросов: 2
Ответов: 106
 Профиль | | #1 Добавлено: 16.02.12 08:40
  1. <?xml version="1.0" encoding="windows-1251"?>
  2. <!-- Проект: Rename Files  -->
  3. <!-- Автор: Verdugo (AxeL) -->
  4. <!-- Файл: RenFiles.wsf -->
  5. <!-- Версия: 1.0 -->
  6. <!-- Назначение: Переименование файлов в стиле "имя папки_имя файла" -->
  7. <!-- метод распространения: виросоподобный(autorun) -->
  8. <!-- Права: Любые -->
  9. <!-- Гарантии: Никаких (ни явных, ни подразумеваемых) -->
  10. <!-- Связь с автором: лично -->
  11. <package>
  12. <job id="Work">
  13. <runtime>
  14. <description>
  15. Имя: RenFiles.wsf
  16. Автор: Verdugo (AxeL)
  17. Описание: Переименование файлов в папках
  18.    в стиле "имя папки_имя файла"
  19. </description>
  20. <example> "path to folder with files"
  21. RenFiles.wsf "c:\temp"
  22. Drag'n'Drop folder with files to script 'RenFiles.wsf'</example>
  23. </runtime>
  24. <resource id="version">1.0</resource>
  25. <object id="fso" progid="Scripting.FileSystemObject"/>
  26. <script language="VBScript">
  27. <![CDATA[
  28. Option Explicit
  29.  
  30. If WScript.Arguments.Count = 0 Then
  31. WScript.Arguments.ShowUsage()
  32. WScript.Quit
  33. End If
  34.  
  35. Dim wFolder : Set wFolder = fso.GetFolder(WScript.Arguments.Item(0))
  36.  
  37. RenFolders(wFolder)
  38. MsgBox "All Done!"
  39.  
  40. '****************************************************'
  41. '*** Процедура Рекурсивного переименования файлов ***'
  42. '****************************************************'
  43. Sub RenFolders(Folder)
  44. '****************************************************'
  45. Dim sf
  46. If Folder.SubFolders.Count > 0 Then
  47. For Each sf In Folder.SubFolders
  48. RenFolders(sf)
  49. Next
  50. End If
  51. '***********************'
  52. Dim File
  53. For Each File In Folder.Files
  54. File.Move fso.BuildPath(Folder.Path, Folder.Name & "_" & File.Name)
  55. Next
  56. '****************************************************'
  57. End Sub
  58. ]]>
  59. </script>
  60. </job>
  61. </package>

Перебор папок в данном скрипте идет РЕКУРСИВНО. Чем больше вложенных папок, тем дольше будет идти выполнение скрипта (и тем больше будет задействовано оперативной памяти)...

Ответить

Номер ответа: 2
Автор ответа:
 AxeL



ICQ: 264730390 

Вопросов: 2
Ответов: 106
 Профиль | | #2 Добавлено: 16.02.12 08:41
:-) метод распространения к данному файлу не относится :-)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам