2014-09-02 48 views
1

我是相当新的JavaScript和卫生技术评估,但这里是我到目前为止有:启动的VBScript从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和用户输入这是一起该.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的值。我目前将输入的值保存到一个文本文件中,但是我很感谢有关完成这个更好方法的任何信息。

感谢您的协助。

回答

0

我在本例中使用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) 
+0

感谢您的答复,但我认为命令行属性将要用于变量时,HTA最初从命令行打开?我的工作流程将是用户打开HTA,输入UN,FN和LN的值,提交并(希望)将这些输入的值传递给vbs。就目前来看,HTA启动时我不会有任何变量。对不起,如果我混淆了这个属性的功能,但。 – 4W4K3 2014-09-02 18:03:06

+0

啊,好吧。那么你是否打算使用'WshShell.Run'来启动VBScript并将参数传递给它? – Bond 2014-09-02 18:11:31

+0

正确,那就是我的想法。目前,我将输入的值保存到“output.txt”,并试图找到一种方法,然后在VBScript启动时从文件中引用这些值......但也许有一种方法可以在不需要一个单独的文本文件? – 4W4K3 2014-09-02 18:21:44