Vb脚本中的两个任务重叠?

时间:2011-05-23 16:25:33

标签: command-line process vbscript

我是VB Script的新手,但由于它很直接,所以我从网上抓取了两段代码并将它们组合成一个以完成我的任务。

基本上我想要的是运行名为“MapForce.exe”的应用程序并生成输出文件,然后创建一个新目录并将此文件复制到这个新目录。

代码很简单:

'This is the line to call MapForce.exe and produce output file. 
createObject("wscript.shell").exec "C:\Program Files\Altova\MapForce2011\MapForce.exe 834toASCII.mfd /BUILTIN  /LOG ACS.log" 

'These are the lines to copy that output file to the new folder:

 sourceDir = "C:\Documents and Settings\Robert\test\result.txt" 
 destinationDir = "C:\Documents and Settings\Robert\test\" 
 const OverwriteExisting = True

 strDirectory = destinationDir & replace(Month(date),"/","_") & " TOU" 
 Set fso = CreateObject("Scripting.FileSystemObject")

 if not fso.FolderExists(strDirectory) then 
 Set objFolder = fso.CreateFolder(strDirectory) 
 end if
 fso.CopyFile sourceDir & "*.*", strDirectory & "\", OverwriteExisting 

现在它可以工作:运行Mapforce.exe,生成输出,创建新文件夹并将文件复制到新文件夹。但问题是,由于MapForce将花费更长的时间来完成并生成最新的输出文件,因此第1行需要更长的时间才能完成,但是,执行复制任务的其余行不会等待它完成,所以在新文件夹中复制的文件始终是旧文件夹,而不是应用程序生成的最新文件。

换句话说,其余的行急于完成任务,而不关心第一行(运行MapForce应用程序)是否完成。

所以我想知道专家是否可以就如何强制其余行等待第一行完成并生成最新输出提供建议?

1 个答案:

答案 0 :(得分:1)

您可以使用WshShell.Run方法。

  1. 第一个参数(REQUIRED)是可执行文件(包括参数)。
  2. 第二个参数(OPTIONAL)指定窗口样式。
  3. 第三个参数(OPTIONAL)指定脚本在继续之前是否等待命令完成。
  4. 样本:

    Dim oShell
    Set oShell = WScript.CreateObject("WScript.Shell")
    returnCode = oShell.Run("Your.exe Param1 Param2", 1, True)