2013-02-12 113 views
1

我已经创建了HTA文件,它具有用户窗体来从用户收集数据。 我从批处理文件中调用这个HTA文件。使用带批处理文件的HTA

阅读用户输入后,我希望输入值从HTA传递到批处理文件。 是可以实现的吗?

+0

保存并将它们读入文件是一个问题吗? – npocmaka 2013-02-12 21:03:35

+0

我的行事方式与你所说的一样。它的工作。谢谢你 – Tjs 2013-02-13 04:48:52

回答

1

是的,您可以让HTA文件将值返回给批处理文件,但不能直接执行。你必须使用Javascript来创建一个包含用户提供值的文本文件,然后你的批处理文件才能处理这些值。这里有几个方法一网站上列出读取和写入文本文件:

http://www.c-point.com/JavaScript/articles/file_access_with_JavaScript.htm

使用其中的一个,我创建了一个非常简单的例子来演示如何做到这一点:

SimpleForm.hta

<HTML> 
    <HEAD> 
    <SCRIPT language="JavaScript"> 
     function WriteFile() { 
     var fso = new ActiveXObject("Scripting.FileSystemObject"); 
     var fh = fso.CreateTextFile("c:\\Output.txt", true); 
     fh.WriteLine(myForm.FN.value + '~' + myForm.LN.value); 
     fh.Close(); 
     } 
    </SCRIPT> 
    </HEAD> 
    <BODY> 
    <FORM name="myForm"> 
     <P>First Name: <INPUT name="FN" type="text"></P> 
     <P>Last Name: <INPUT name="LN" type="text"></P> 
     <P><INPUT type="button" value="Save Values" onclick="WriteFile();"></P> 
    </FORM> 
    <P>After you click 'save', close the window.</P> 
    </BODY> 
</HTML> 

现在的批处理文件:

@echo off 

start /wait SimpleForm.hta 
for /f "tokens=1,2 delims=~" %%i in (C:\Output.txt) do (
    set FirstName=%%i 
    set LastName=%%j 
) 

del C:\Output.txt 

echo The user entered %FirstName% %LastName% for their name. 

您需要处理用户输入分隔符(在我的示例中为波形符号)的复杂性,并将其放入其中一个文本字段中,并抛出for语句的参数解析。您可以使用用户不会输入的隐藏字符。

+0

感谢朋友:) – Tjs 2013-02-13 04:47:40