【问题标题】:hybrid batch/jscript/hta: read 2 inputs in Jscript and pass them to Batch混合批处理/jscript/hta:读取 Jscript 中的 2 个输入并将它们传递给批处理
【发布时间】:2023-05-06 14:35:02
【问题描述】:

大家早上好,

我目前正在编写一个小批量/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 html batch-file jscript hta


    【解决方案1】:

    如果您需要返回多个值,最简单的方法是将它们与分隔符连接起来,并正确配置 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”的调用是错误的!
    最近更新 更多