VBScript Shell无法获取更新的文件

时间:2015-03-19 23:25:02

标签: windows batch-file vbscript

我正在处理将由其他脚本调用的VBScript,它复制剪贴板内容并将其用作父脚本的输入。该脚本调用两个批处理文件copyClipboard.bat和copyToScripts.bat。 CopyClipboard.bat将剪贴板复制到名为clip.txt的文本文件中。 CopyToScripts.bat将clip.txt复制到作为参数传入的任何路径。我的逻辑如下。

dim shell
set shell=createobject("wscript.shell")

shell.run "C:\Batch\copyClipboard.bat"
shell.run "C:\Batch\copyToScripts.bat C:\Users\kkulis\Desktop\input.txt"

set shell=nothing

看起来这应该可行,但copyToScripts.bat总是复制clip.txt的内容,然后copyClipboard.bat覆盖它们。因此,即使copyClipboard在copyToScripts之前运行,它就好像copyClipboard从未运行过一样。如果我在命令行中运行copyClipboard.bat然后copyToScripts.bat,它可以正常工作。我认为copyToScripts没有获得clip.txt的更新版本。

我尝试创建两个不同的shell对象,但这并没有解决问题。我错过了什么?

感谢。

1 个答案:

答案 0 :(得分:0)

两个批处理文件同时执行,而不是按顺序执行。 object.Run(strCommand,[intWindowStyle],[bWaitOnReturn])。将bWaitOnReturn设置为true。

我们必须看到批处理文件。

以下是如何在VBS中获取剪贴板。

来自Filter.vbs

Set Arg = WScript.Arguments
set WshShell = createObject("Wscript.Shell")
Set Inp = WScript.Stdin
Set Outp = Wscript.Stdout

Sub Clip
    Set ie = CreateObject("InternetExplorer.Application") 
    ie.Visible = 0
    'Have to navigate to a local file to put IE into Intranet Zone, else this will generate security dialog asking permission
    ie.Navigate2 FilterPath & "Filter.html"
    Do 
        wscript.sleep 100
    Loop until ie.document.readystate = "complete"  
    txt=ie.document.parentwindow.clipboardData.GetData("TEXT")
    ie.quit
    If IsNull(txt) = true then 
        outp.writeline "No text on clipboard"
    else
        outp.writeline txt
    End If
End Sub