я новачок у сценаріях 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.