Я не могу найти, что не так с моим скриптом резервного копирования в VBS - PullRequest
1 голос
/ 07 июня 2019

Мой сценарий может быть упрощенно сложным, но я не вижу ничего плохого в коде.По любой причине я могу получить любую папку для копирования вместо папки «Мои документы».Мой сценарий говорит, что путь не найден.Когда я настраиваю код и документы «путь найден», я получаю ошибку «Отказано в доступе».Эта проблема была только с папкой «Документы».Мой код приведен ниже, мне нужна помощь по его устранению.

Option Explicit

Dim oShell, oFSO
Set oShell = CreateObject("WScript.Shell")
Set oFSO = CreateObject("Scripting.FileSystemObject")
Const Overwrite = True

Dim strHomeFolder
Dim usersName
Dim UserProfile
strHomeFolder = oShell.ExpandEnvironmentStrings("%USERPROFILE%")
usersName = oShell.ExpandEnvironmentStrings("%USERNAME%")

Sub DataBackup
    UserProfile = strHomeFolder & "\"

    Dim Desktop, Documents, Downloads, Favorites, Pictures, Videos, Music,
    Dim nDocuments, n1Documents

    Documents = UserProfile & "Documents"
    'nDocuments = "C:\Users\" + usersName + "\" + "Documents"+ "\" - " Test"
    'n1Documents = "C:\Users\user.profile.name\Documents\"           - "Test"

    Desktop = UserProfile & "\Desktop"
    Downloads = UserProfile & "\Downloads"
    Favorites = UserProfile & "\Favorites"
    Pictures = UserProfile & "\Pictures"
    Videos = UserProfile & "\Videos"
    Music = UserProfile & "\Music"

    Dim dtmValue, strDate, strTime
    dtmValue = Now()

    'Assuming that you are creating these folders in C:\
    strDate = "C:\MyBackup" & "_" & Month(dtmValue) & "-" & Day(dtmValue) & "-" & Year(dtmValue)
    strTime = strDate & "_" & Hour(dtmValue) & "." & Minute(dtmValue)

    Dim DestTimeStampFolder
    DestTimeStampFolder = StrTime

    oFSO.CreateFolder DestTimeStampFolder
    MsgBox "check if folder exists!"

    If Not oFSO.FolderExists(DestTimeStampFolder) Then
        Set DestTimeStampFolder = oFSO.CreateFolder(DestTimeStampFolder)
    End If

    On Error Resume Next

    MsgBox DestTimeStampFolder & "\Documents"

    oFSO.CopyFolder Documents, DestTimeStampFolder & "\Documents", Overwrite
    'oFSO.CopyFolder nDocuments, DestTimeStampFolder & "\Documents", Overwrite  - ' "Used for Testing"
    'oFSO.CopyFolder n1Documents, DestTimeStampFolder & "\Documents", Overwrite - ' "Used for Testing"

    If Err Then
        WScript.Echo "Error # " & Err.Number
        WScript.Echo Err.Description
        WScript.Quit 1
    End If
End Sub

Мой код отладки дает мне код ошибки 70 (путь не найден) и 76 (разрешения запрещены).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...