HTA表单变量传递给批处理文件

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (73)

我试图将.hta文件与我希望运行的.exe保存在同一个文件夹中。我知道至少有两种方法可以从.hta文件启动这个应用程序。

如果代码可以在一个文件中完成,而不是将用户输入变量发送到批处理文件中,那么我更希望这样做,但无论如何都是最有效的。

  1. .hta必须计算出它在哪个工作文件夹(SourceDir)中操作,并将其作为.exe命令变量的一部分使用。
  2. 用户将从下拉列表中选择几个选项。无论选择什么作为.exe命令变量的一部分(除了上面的)2a,用户可以选择在文本框中输入一个值,该文本框将向.exe添加一个额外的变量。
  3. 然后,用户将有2个按钮来单击以完成表单。无论选择什么,都会为命令行输出的最后部分指定路径。

路径1的当前批处理文件:

     @echo off
     cd SourceDir
     app.exe -v --log-file testH.txt -H -L "SourceDir\123\x.dll" 
     "SourceDir\456\abc.rar"

路径2的当前批处理文件:

    @echo off
    cd SourceDir
    app.exe -v --log-file testC.txt -C usertext -L "SourceDir\123\x.dll" 
    "SourceDir\456\abc.rar"

我有一个基本的代码不太工作:

    <SCRIPT LANGUAGE="VBScript">
     Sub Hosting
       Set Shell = CreateObject("WScript.Shell")
       Shell.run "app.exe -v --log-file testH.txt -H -L "& 
       SourceDir.Value & "123\x.dll" & SourceDir.Value & "456\abc.rar"
     End Sub
    </SCRIPT>

如何使表单字段和原始数据在此exe上工作?是否更容易将变量转移到批处理文件并相应进行编辑?

小部分:

    <html>
    <head>
    <title>Test</title>  
    <HTA:APPLICATION  
         ID="objHTA_Info"  
         APPLICATIONNAME="HTA_Info"  
         SINGLEINSTANCE="yes"  
    >
    <script language="VBScript"> 
    FullName = replace(objHTA_Info.commandLine,chr(34),"")  
    arrFN=split(FullName,"\")  
    FileName = arrFN(ubound(arrFN))  
    SourceDir=replace(FullName,FileName,"")  
    Sub Window_onLoad  
        html = "<TABLE><TR><TD><b>Directory of app.exe </b></TD></TR><TR><TD>" & SourceDir & "</TD></TR></TABLE>"
        BLAH.InnerHTML = html  
    End Sub

    Sub RunProgram
        Set objShell = CreateObject("Wscript.Shell")
        objShell.Run "app.exe -L " & SourceDir & "123\x.dll" & SourceDir & "456\abc.rar"
    End Sub
    </script>
    </head> 
    <body>
    <button onclick="RunProgram">Run app.exe</button>
    <SPAN ID=BLAH></SPAN>
    </body>
    </html>

脚本的第一部分工作正常,并显示正确的工作目录路径。点击按钮会打开应用程序,但是由于参数的错误而崩溃。

如果没有参数,它就运行得很好:

       Sub RunProgram
        Set objShell = CreateObject("Wscript.Shell")
        objShell.Run "app.exe"
       End Sub
提问于
用户回答回答于

尝试将所有命令放入一个变量中,并使用msgbox查看语法是否正确。"123\x.dll" & SourceDir

我不是批处理文件专家,但是您在哪里捕获参数?

所属标签

可能回答问题的人

  • gulu丶咕噜

    0 粉丝1 提问5 回答
  • EatRice

    16 粉丝0 提问4 回答
  • 华讯云

    0 粉丝0 提问4 回答
  • 卓脑域名

    0 粉丝0 提问3 回答

扫码关注云+社区

领取腾讯云代金券