2-й набор VB-скрипта выполняется первым, чем первый набор операторов - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть 2 набора VB-сценариев, один для создания файла, а второй - для переименования файла.

Когда я запускаю его, он выдает ошибку: «файл не найден, продвигая строку ошибкипри переезде команда ', что означает, что он ищет файл для переименования.Но я хочу создать файл, а затем переименовать.

Когда я работаю по отдельности, все работает нормально.Может ли кто-нибудь помочь решить проблему?

Set1:

' it will create a object called Export.tar.gz  (Working fine - Due to security contrarian i have partially placed the code in set1)

Dim objShell
Set objShell = WScript.CreateObject ("WScript.shell")

objShell.run "cmd /C CD D:\test\VB practice\Mrcctl ************************************ localfolder=D:\FullExport"
Set objShell = Nothing

Set2:

Dim ObjFSO
SET ObjFSO = CreateObject("Scripting.FileSystemObject")
Dim file1, file2

file1 = "D:\FullExport\Export.tar.gz"
file2 = "D:\FullExport\Export" & year(date) & month(date) & Day(Date) & ".tar.gz"

ObjFSO.MoveFile file1, file2

Set ObjFSO = Nothing

1 Ответ

0 голосов
/ 12 декабря 2018

Команда оболочки выполняется в отдельном системном потоке, поэтому сценарий VBS не будет ожидать завершения работы оболочки.Чтобы решить эту проблему, вам нужно подождать, пока файл фактически не будет создан и выпущен системой, и только затем переименовать его.Как возможное решение, вы можете обновить ваш второй скрипт следующим образом:

Set2

Dim ObjFSO
SET ObjFSO = CreateObject("Scripting.FileSystemObject")
Dim file1, file2

file1 = "D:\FullExport\Export.tar.gz"
file2 = "D:\FullExport\Export" & year(date) & month(date) & Day(Date) & ".tar.gz"

On Error Resume Next
Do
    Err.Clear
    Set oFile = ObjFSO.OpenTextFile(file1, 8, False)
    if err.number = 0 then Exit Do

    WScript.Sleep 1000
Loop

On Error Goto 0
oFile.Close
set oFile = Nothing

ObjFSO.MoveFile file1, file2

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