2016-10-14 3 views
0

저는 VBS 스크립팅을 처음 사용하기 때문에 이전에 Excel VBA로 몇 가지 작업을 수행했습니다. 이제 파일의 경로 이름을 가진 단일 파일의 이름을 바꾸는 스크립트가 있습니다 (각각 4 자로 잘립니다). 아래를 참조하십시오. 내 목적에 맞게 수정 한 스크립트입니다. 그러나, 단일 파일에 대해 scipt가 작동하는 것과 같은 방식으로 파일 이름 바꾸기 프로세스를 자동화하고 폴더 및 해당 하위 폴더의 모든 파일 이름을 바꾸고 싶습니다. 아무도이 질문으로 나를 도울 수 있습니까?경로 이름을 사용하여 파일의 이름을 바꾸는 VBS 스크립트

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

재귀, 각 레벨에 대한 자신을 호출하는 기능이 필요합니다.

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") 

그리고 루프 또한 VBS 도움말 파일이 최근 MS 웹 사이트에서 내려 촬영되었습니다

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

에서

. 내 skydrive에서 사용할 수 있습니다 https://1drv.ms/f/s!AvqkaKIXzvDieQFjUcKneSZhDjw 그것은 script56.chm라고합니다.

+0

안녕하세요, 도움을 주셔서 감사합니다. 나는이 스크립트를 msgbox와 함께 현재의 스크립트로 대체하려고했는데, 각 파일에 대한 스크립트를 호출하면 작동하지만 실패했다. thing.name = "hello.txt"만 삽입하면 하나의 파일 이름이 바뀝니다 ... 이름 바꾸기 스크립트를 위해 별도의 하위 파일을 작성한 다음 그 파일에서 호출해야합니다. 목적? – Herbie245

+0

아 ... 알았어. 같은 이름을 가진 둘 이상의 파일의 이름을 바꿀 수 없기 때문이다 ... 사용. – Herbie245

+0

안녕 ... 고마워. 이것은 이미 많은 도움이됩니다. thing.name = i & ".txt"와 같은 간단한 인수를 사용하여 모든 파일의 이름을 바꿀 수있었습니다. 즉 iterator입니다. 그러나 파일 이름을 바꾸는 절차는 매우 복잡합니다. 그래서 일단 스크립트를 통합하고 싶다면 작동하지 않습니다. 내 스크립트를 그대로 사용하고 재귀에서 호출 할 수 있습니까 ?? 고마워요 .- – Herbie245

관련 문제