从HTA启动VBScript并传递变量

时间:2014-09-02 15:04:53

标签: javascript vbscript hta

我是javascript和HTA的新手,但这是我到目前为止所做的:

  <HTML> 
  <HEAD> 
  <title>Create Drive</title>
    <HTA:APPLICATION
     APPLICATIONNAME="CreateDrive"
     VERSION="1.0"
     SINGLEINSTANCE="yes"/>
    <SCRIPT language="JavaScript">
    window.resizeTo(400,300)
      function WriteFile() {
        var fso  = new ActiveXObject("Scripting.FileSystemObject"); 
        var fh = fso.CreateTextFile("output.txt", true); 
        fh.WriteLine(userinfo.UN.value + ' ' + userinfo.FN.value + ' ' + userinfo.LN.value);
        fh.Close(); 
      }
    </SCRIPT>
  </HEAD>
  <BODY>
    <FORM name="userinfo">
      <P>User Name: <INPUT name="UN" type="text"></P>
      <P>First Name: <INPUT name="FN" type="text"></P>
      <P>Last Name: <INPUT name="LN" type="text"></P>
      <P><INPUT type="button" value="Create Drive" onclick="WriteFile();"></P>
    </FORM>
    </BODY>
</HTML>

我的目标是使用此HTA为新用户帐户创建网络驱动器。以前,要实现此目的,使用引用VBScript的.bat,并且用户输入三个值(用户名,名字和姓),这些值被传递到.vbs并创建驱动器:

cscript /nologo newdrive.vbs q:\users\%1 /DFS:yes /server:server1 /server2:server2 /userfirstname:%2 /userlastname:%3 /quiet:no

我想直接从我的HTA访问此VBScript并传递UN,FN和LN的值。我目前正在将输入的值保存到文本文件中,但我感谢有关完成此更好方法的任何信息。

感谢您的协助。

1 个答案:

答案 0 :(得分:1)

我在这个例子中使用VBScript。但是,您可以轻松地在JavaScript中执行此操作。

Sub WriteFile()

    ' Retrieve the form values to be passed as args...
    a1 = userinfo.UN.value
    a2 = userinfo.FN.value
    a3 = userinfo.LN.value

    With CreateObject("WScript.Shell")

        ' Run the script, passing along the form values...
        .Run "wscript.exe newdrive.vbs " & a1 & " " & a2 & " " & a3

    End With

End Sub

newdrive.vbs脚本中,您将使用WScript.Arguments集合检索这些值:

strUser  = WScript.Arguments(0)
strFirst = WScript.Arguments(1)
strLast  = WScript.Arguments(2)