/ / VBS скрипт для перейменування файлів за допомогою імені шляху - vbscript, rename

VBS-скрипт для перейменування файлів за допомогою імені шляху - vbscript, перейменування

я новачок у сценаріях VBS, і я зробив небагаторечі з Excel VBA раніше. Тепер у мене є сценарій, який перейменовує окремі файли із назвою шляху до файлів (усічений до 4 літер кожен)), див. Нижче. Це якийсь сценарій, який я трохи модифікував відповідно до своєї мети. Однак я хотів би автоматизувати процес перейменування файлів і перейменувати всі файли в папці та її підпапках так само, як працює scipt для окремих файлів. Хто-небудь може мені допомогти з цим питанням?

Set Shell = WScript.CreateObject("WScript.Shell")
Set Parameter = WScript.Arguments
For i = 0 To Parameter.Count - 1
Set fso = CreateObject("Scripting.FileSystemObject")
findFolder = fso.GetParentFolderName(Parameter(i))
PathName = fso.GetAbsolutePathName(Parameter(i))
FileExt = fso.GetExtensionName(Parameter(i))
Search = ":"
findFolder2= Right(PathName, Len(PathName) - InStrRev(PathName, Search))
arr = Split(findFolder2, "")
For j=0 To UBound(arr)-1
arr(j) = ucase(Left(arr(j), 4))
Next
joined = Join(arr, "%")
prefix = right(joined, len(joined)-1)
fso.MoveFile Parameter(i), findFolder + "" + prefix
next

Сподіваючись, що я можу отримати корисні ідеї.

Гербі

Відповіді:

1 для відповіді № 1

Ходьба по дереву вимагає рекурсії - функції, що викликає себе для кожного рівня.

On Error Resume Next
Set fso = CreateObject("Scripting.FileSystemObject")
Dirname = InputBox("Enter Dir name")
ProcessFolder DirName

Sub ProcessFolder(FolderPath)
On Error Resume Next
Set fldr = fso.GetFolder(FolderPath)

Set Fls = fldr.files
For Each thing in Fls
msgbox Thing.Name & " " & Thing.DateLastModified
Next

Set fldrs = fldr.subfolders
For Each thing in fldrs
ProcessFolder thing.path
Next

End Sub

З довідки про те, як запустити інший файл.

Set Shell = WScript.CreateObject("WScript.Shell")
shell.Run(strCommand, [intWindowStyle], [bWaitOnReturn])

Отже за межами циклу,

Set Shell = WScript.CreateObject("WScript.Shell")

І в циклі

shell.Run("wscript Yourscript.vbs thing.name, 1, True)

Також файл довідки VBS нещодавно було видалено на веб-сайті MS. Це доступно на моєму skydrive за адресою https://1drv.ms/f/s!AvqkaKIXzvDieQFjUcKneSZhDjw Він називається script56.chm.