none
[VBS Script] Delete_Created_files 問題 RRS feed

  • 問題

  • 最近在網上學了一些寫 vbs 的方法, 以下是我改寫的 vbs , 這個在 windows xp 繁體版 下執行是沒有問題的。
    但是在 windows server 2003 繁體版 就出現 error.

    P.S . 雖然出現錯誤 , 但也可以執行



    這程式 用來定期 刪除 7天 前 建立的檔案 , 範圍可以覆蓋其子資料夾

    程式碼區塊

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    objStartFolder = "Z:\"


    Set objFolder = objFSO.GetFolder(objStartFolder)
    strDate = Split(objFolder.DateCreated," ")
    If DateDiff("d",Date,strDate(0)) > 7 Then
            'WScript.Echo objFolder.Path
            objfso.DeleteFolder objfolder
    End If
    Set colFiles = objFolder.Files
    For Each objFile in colFiles
            strDate = Split(objfile.DateCreated," ")
        'WScript.Echo objfile.DateLastModified
        If DateDiff("d",strDate(0),Date) > 7 Then
           'Wscript.Echo objfile.ParentFolder & "\" & objFile.Name
            objfso.DeleteFile objfile
        End if
    Next

    ShowSubfolders objFSO.GetFolder(objStartFolder)

    Sub ShowSubFolders(Folder)
            On Error Resume next
        For Each Subfolder in Folder.SubFolders
                    strDate = Split(SubFolder.DateCreated," ")
                    If DateDiff("d",Date,strDate(0)) > 7 Then
                            'WScript.Echo SubFolder.Path
                            objfso.DeleteFolder subfolder
                    End If
            Set objFolder = objFSO.GetFolder(Subfolder.Path)
            Set colFiles = objFolder.Files
            For Each objFile in colFiles
            strDate = Split(objfile.DateCreated," ")
        'WScript.Echo objfile.DateLastModified
        If DateDiff("d",strDate(0),Date) > 7 Then
           'Wscript.Echo objfile.ParentFolder & "\" & objFile.Name
            objfso.DeleteFile objfile
        End if
            Next
            ShowSubFolders Subfolder
        Next
    End Sub

    WScript.Echo "Done!"


    1. 請問是windows 版本問題 , 還是在改寫時寫錯了某些變數呢 ?
    2. 如果是程式寫法上面的錯誤應如何修正呢 ?


    麻煩各位會 VBS 看看 , 提供意見 , 謝謝

    2007年11月10日 上午 04:21

解答

  • 既然你說:

     Billyim 寫信:
    P.S . 雖然出現錯誤 , 但也可以執行
    那就在程式碼出錯的地方之前,加上如下的一行程式碼:

     

    程式碼區塊

    On Error Resume Next

     

    2007年11月10日 上午 09:18

所有回覆

  • 既然你說:

     Billyim 寫信:
    P.S . 雖然出現錯誤 , 但也可以執行
    那就在程式碼出錯的地方之前,加上如下的一行程式碼:

     

    程式碼區塊

    On Error Resume Next

     

    2007年11月10日 上午 09:18
  • 我在 Error 前加上了 , 這句在 03 Server 下執行 , 沒有 error 出現了 , 謝謝 Alex !

    程式碼區塊

    Set objFolder = objFSO.GetFolder(objStartFolder)
    On Error Resume Next
    strDate = Split(objFolder.DateCreated," ")


    2007年11月12日 上午 06:49