VBS Sync Center Синхронизировать автономные файлы - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь синхронизировать автономные файлы с VBScript.Я отредактировал код ниже, чтобы синхронизировать три пути:

Set wshShell = CreateObject( "WScript.Shell" )
strUserName = wshShell.ExpandEnvironmentStrings( "%USERNAME%" )

strPathProfile = "\\SRV01\Path1$\" & strUserName
strPathHome = "\\SRV01\Path2$\" & strUserName
strPathShared = "\\SRV01\Path3$"

    SynchronizeOfflineFiles strPathProfile
    SynchronizeOfflineFiles strPathShared
    SynchronizeOfflineFiles strPathHome

Sub SynchronizeOfflineFiles(strSyncPath)
Dim objShell
Dim objFolderPath
    Set objShell = CreateObject("shell.application")
    Set objFolderPath = objShell.NameSpace(strSyncPath)

    If (not objFolderPath is nothing) then
        objFolderPath.Synchronize

    End If

    Set objFolderPath = nothing
    Set objShell = nothing
End Sub

Моя единственная проблема в том, что центр синхронизации будет синхронизировать пути один за другим, в результате чего два из них потерпят неудачу.Путь сверху (в данном случае strPathProfile) будет успешным.Поэтому, если я изменю порядок, например, на

SynchronizeOfflineFiles strPathHome
SynchronizeOfflineFiles strPathShared
SynchronizeOfflineFiles strPathProfile

strPathHome будет успешным, а два других не пройдут.

Когда я использую команду WScript.Sleep 5000 Примерно так:

SynchronizeOfflineFiles strPathProfile
WScript.Sleep 30000
SynchronizeOfflineFiles strPathShared
WScript.Sleep 30000
SynchronizeOfflineFiles strPathHome

Он будет ждать синхронизации других путей, но мне нужно установить время.Можно ли дождаться завершения предыдущей синхронизации?

Я также получаю сообщение об ошибке: отсутствует механизм сценариев для расширения файла ".vbs", когда один из общих ресурсов отключен.Могу ли я позволить сценарию проверить, находится ли общий ресурс в сети и, если нет, перейти к следующему?

1 Ответ

0 голосов
/ 07 июня 2018

Ваша проблема в том, что вы запускаете sub SynchronizeOfflineFiles до завершения первого.Затем, когда это произойдет, у вас будет Set objFolderPath = none.

Вы можете либо запустить sub с разными аргументами после завершения предыдущего, либо вы можете написать несколько версий SynchronizeOfflineFiles с дифференцированием tobjFolderPath.

...