0

我一直在努力寻找答案,但与我的问题不完全匹配。

下面是用于重命名文件夹的脚本片段,这不会给我一个错误并继续它只是停止。

在脚本的开头,一般我的大部分脚本都有“选项显式”,所以我想可能会停止它,我使用了“下一个错误恢复”,但它仍然停止。

我知道我是如何得到错误的,因为我在目录中打开了一个文件我正在尝试“重命名”我正在尝试执行的操作它让脚本说“对不起,您在该目录中打开了一个文件”和继续下一个文件夹...

你能帮我解决这个问题吗

objFSO.MoveFolder (folder1),(folder2)

If Err.Number <> 0 Then
  WScript.Echo Err.Description
  WScript.Echo Err.Number
End If

干杯,

帕夫

4

2 回答 2

0

你把它放在On Error Resume Next下面Sub吗?您还应该清除错误。

我相信您正在使用 cscript 在命令提示符下运行 vbs:

Sub RenameFolders()
    On Error Resume Next
    ' Add your codes

    objFSO.MoveFolder (folder1),(folder2)
    If Err.Number <> 0 Then
        WScript.Echo "sorry you have a file open in that directory"
        WScript.Echo Err.Description
        WScript.Echo Err.Number
        Err.Clear ' Clear the ERROR!
    End If
End Sub
于 2013-09-25T02:26:51.767 回答
0
Dim SPath 'As String
Dim DPath 'As String

SPath = "d:\test1"
DPath = "E:\test1"

Call MoveFolders(SPath ,DPath)


Sub MoveFolders(PSPath,PDPath)
  '-----------------------------
  PSPath = Trim(PSPath)
  PDPath = Trim(PDPath)
  '-----------------------------
  Dim objFso  'AS Object
  Dim objFil  'As Object
  Dim objMFld 'As Object
  Dim objSFld 'As Object
  '/*----------------------------
  Dim DestFullPath     'As String 
  Dim DestFullFilePath 'As String 
  '----------------------------------------------------
  Set objFso  = CreateObject("Scripting.FileSystemObject")
  '----------------------------------------------------
  If objFso.FolderExists(PSPath) Then
    Set objMFld = objFso.GetFolder(PSPath)
    '----------------------------------------------------
    If Not objFso.FolderExists(PDPath) Then
       objFso.CreateFolder(PDPath)
    End If
    '----------------------------------------------------  
    For Each objSFld In objMFld.SubFolders
      DestFullPath = Replace(objSFld, PSPath, PDPath ,1, 1, vbTextCompare)
      '/*------------------------
      Call MoveFolders(objSFld,DestFullPath)
      '/*------------------------
    Next
    '/*------------------------
    For Each objFil In  objFso.GetFolder(PSPath).Files
      '/*------------------------
        DestFullFilePath = PDPath & "\" & objFil.Name
      '/*------------------------
      If objFso.FileExists(DestFullFilePath) Then
         objFSO.DeleteFile(DestFullFilePath)
      End If
      '/*------------------------
      objFso.MoveFile objFil , PDPath & "\"
    Next
    '/*------------------------
    If objFso.GetFolder(PSPath).Files.Count = 0 And objFso.GetFolder(PSPath).SubFolders.Count = 0 Then
       objFso.DeleteFolder PSPath
    End If
    '------------------------------
  End If
End Sub
于 2013-10-11T11:35:21.240 回答