Всем доброе утро,
В настоящее время я пишу небольшую программу batch/jscript/hta.
В следующей программе я читаю поле ввода текста, передаю текст в пакет и отображаю его там:
<!-- :: Batch section
@echo off
setlocal
for /F "delims = " %%a in ('mshta.exe "%~F0"') do set "result=%%a"
echo End of HTA window, reply: "%result%"
pause
goto :EOF
-->
<HTML>
<HEAD>
<HTA:APPLICATION SCROLL = "no" SYSMENU = "no" >
<TITLE>HTA Buttons</TITLE>
<SCRIPT language = "JavaScript">
window.resizeTo(374,400);
function myFunction() {
var x = document.getElementById("myText").value;
var fso = new ActiveXObject("Scripting.FileSystemObject");
fso.GetStandardStream(1).WriteLine(x);
window.close();
}
</SCRIPT>
</HEAD>
<BODY>
<h3>A demonstration of how to access a Text Field</h3>
<input type = "text" id = "myText" value = "0123">
<p>Click the "Login" button to get the text in the text field.</p>
<button onclick = "myFunction()">Login</button>
</BODY>
</HTML>
Это прекрасно работает.
Теперь мой вопрос: Как я могу прочитать два поля ввода текста и передать их в пакет? Я всегда получаю ошибки в части Jscript!
Заранее спасибо, надеюсь, кто-нибудь поможет мне с этим.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Если вам нужно вернуть более одного значения, самый простой способ - объединить их с помощью символа-разделителя и правильно настроить for /f для разделения строки чтения на отдельные токены.
<!-- :: Batch section
@echo off
setlocal enableextensions disabledelayedexpansion
rem Defined which tokens we need and the delimiter between them
for /F "tokens=1,2 delims=|" %%a in ('mshta.exe "%~F0"') do (
set "field1=%%a"
set "field2=%%b"
)
echo End of HTA window, reply: "%field1%" "%field2%"
pause
goto :EOF
-->
<HTML><HEAD><HTA:APPLICATION SCROLL = "no" SYSMENU = "no" >
<TITLE>HTA Buttons</TITLE>
<SCRIPT language = "JavaScript">
window.resizeTo(374,400);
function myFunction() {
new ActiveXObject("Scripting.FileSystemObject")
.GetStandardStream(1)
.WriteLine(
[ // Array of elements to return joined with the delimiter
document.getElementById("myText").value
, document.getElementById("myText2").value
].join('|')
);
window.close();
};
</SCRIPT>
</HEAD>
<BODY>
<h3>A demonstration of how to access a Text Field</h3>
<input type = "text" id = "myText" value = "0123">
<input type = "text" id = "myText2" value = "4567">
<p>Click the "Login" button to get the text in the text field.</p>
<button onclick = "myFunction()">Login</button>
</BODY>
</HTML>
Отлично! Большое спасибо! Мой вызов GetStandardStream(1).WriteLine был неправильным!