VBScript: Получаване на грешка при пакетно преименуване на файлове в папка

В този скрипт се опитвам да преименувам всички файлове в папка. Новите имена, които ще събера от всеки текстов файл сам по себе си, използвайки Instr(1, strText, "(Amtlicher Gemeindeschlüssel = " ...). Така че всички jsp-файлове ще бъдат продължени. Но получавам обект -грешка почти в края: 800A01A8 - Изисква се обект. Може ли някой да ми помогне да заменя обекта strVerz.files, така че кодът да работи. Благодаря ви предварително< /em> Майкъл

Dim objFso, strFolder

' Begin Main

Set objFso = CreateObject("Scripting.FileSystemObject")
strFolder = objFso.GetParentFolderName(WScript.ScriptFullName)  

If objFso.FolderExists(strFolder) Then
    Call GetJspFiles(objFso.GetFolder(strFolder))
End If

Set objFso = Nothing

' End Main

Sub GetJspFiles(ByRef objFolder)
    Dim objFile, objSubFolder

    For Each objFile In objFolder.Files
        If LCase(objFso.GetExtensionName(objFile.Name)) = "jsp" Then
            Call JSPRename(objFile.Path, objFolder.Path)
        End If
    Next

    For Each objSubFolder In objFolder.SubFolders
      Call GetJspFiles(objSubFolder)
    Next
' objFile.Close

End Sub

Sub JSPRename(ByRef strPath, ByRef strFolder)
    Dim arrText, strText, strTextLine, Position , objJspFile, newFilename, strVerz

    Set objJspFile = objFso.OpenTextFile(strPath)

    arrText = Split(objJspFile.ReadAll, vbCrLf) ' split to lines

    For Each strTextLine In arrText
      If strTextLine <> "" Then
         strText = Trim(strTextLine)

       If Instr(1,strText,"(Amtlicher Gemeindeschlüssel",1) Then
        Position=Instr(1, strText, "(Amtlicher Gemeindeschlüssel =",1)
       newFilename=mid(strText,Position+31, 8)

       else
       end if
      end if

    Next

    strVerz=objFSO.GetParentFoldername(WScript.ScriptFullName)
    strNewName = strVerz & "\" & newFilename & ".jsp" 

    ' Wscript.echo strNewName & vbcrlf & strVerz.files '!! only for Showing the results

     objFSO.MoveFile strVerz.files, strNewName <- Here I get the error

     objJspFile.Close

End Sub

person Gurkenhobel    schedule 15.07.2012    source източник


Отговори (1)


Изглежда, че целта на JSPRename е да преименува файла, даден от strPath. В такъв случай извикването на MoveFile трябва изглежда като:

objFSO.MoveFile strPath, strNewName
person Cheran Shunmugavel    schedule 15.07.2012
comment
Благодаря, но получавам грешка 46 (разрешението е отказано) на този ред - person Gurkenhobel; 16.07.2012
comment
Благодаря, но получавам грешка 46 (разрешението е отказано) на този ред. WScript.Echo ми дава C:\Test\jhz.jsp\14521670.jsp, но трябва да е C:\Test\14521670.jsp. Как мога да унищожа Subdir-низа, който е старото име на файл (jhz.jsp)? - person Gurkenhobel; 16.07.2012
comment
Здравей, след добавяне на функция за манипулиране на текст и преместване на objJspFile.Close нагоре, скриптът работи. Ето края на скрипта ` Next objJspFile.Close cutlastoff=Left(strPath, inStrRev(strPath,\)-1) strNewName = cutlastoff & \ & newFilename & .jsp ' изрязване на името на файла ' Wscript .echo Ново име: & strNewName & vbcrlf & Старо име: & strPath '!! само за Показване на резултатите objFSO.MoveFile strPath, strNewName End Sub` - person Gurkenhobel; 16.07.2012