第二组VB脚本首先运行,而不是第一组语句

问题描述 投票:0回答:1

我有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
vba
1个回答
0
投票

shell命令在单独的系统线程中运行,因此当shell完成时,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
© www.soinside.com 2019 - 2024. All rights reserved.