使用路径名重命名文件的VBS脚本

时间:2016-10-14 22:51:14

标签: vbscript rename

我是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 个答案:

答案 0 :(得分: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) 

此外,最近在MS网站上删除了VBS帮助文件。它可以在https://1drv.ms/f/s!AvqkaKIXzvDieQFjUcKneSZhDjw的我的skydrive上找到它叫做script56.chm。