我创建了具有用户表单的 HTA 文件以从用户那里收集数据。我从批处理文件中调用这个 HTA 文件。
读取用户输入后,我希望将输入值从 HTA 传递到批处理文件。有没有可能实现?
我创建了具有用户表单的 HTA 文件以从用户那里收集数据。我从批处理文件中调用这个 HTA 文件。
读取用户输入后,我希望将输入值从 HTA 传递到批处理文件。有没有可能实现?
是的,您可以让 HTA 文件将值返回到批处理文件,但不能直接执行此操作。您必须使用 Javascript 使用用户提供的值创建一个文本文件,然后您的批处理文件才能处理这些值。这是一个站点,其中列出了几种读取和写入文本文件的方法:
http://www.c-point.com/JavaScript/articles/file_access_with_JavaScript.htm
使用其中一个,我创建了一个非常简单的示例来演示如何完成:
简单表单.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
语句的参数解析的复杂性。例如,您可以使用用户不会键入的晦涩字符。