Да, вы можете заставить 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
. Вы можете использовать неясный символ, который пользователь не будет вводить, например.
проблема с сохранением и чтением их в файл? – npocmaka
Я сделал так же, как вы сказали. Работает. THunk you – Tjs