我是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应用程序)是否完成。
所以我想知道专家是否可以就如何强制其余行等待第一行完成并生成最新输出提供建议?
答案 0 :(得分:1)
您可以使用WshShell.Run方法。
样本:
Dim oShell
Set oShell = WScript.CreateObject("WScript.Shell")
returnCode = oShell.Run("Your.exe Param1 Param2", 1, True)