使用HTA与批处理文件

时间:2013-02-12 06:23:36

标签: batch-file hta

我创建了HTA文件,该文件具有userform以从用户收集数据。 我从批处理文件中调用这个HTA文件。

读取用户输入后,我希望输入值从HTA传递到批处理文件。 有可能实现吗?

1 个答案:

答案 0 :(得分: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语句的参数解析的复杂性。例如,您可以使用用户不会输入的模糊字符。