用于运行批处理文件的GUI

时间:2018-04-09 09:30:53

标签: batch-file cmd

我有3个批处理文件。其中一个需要用户输入。我想知道我如何拥有一个带有3个按钮的GUI(每个批处理文件1个)和一个用于其他批处理文件的用户输入文本框?

我正在尝试使用this answer进行制作,如下所示:

<!-- :: Batch section
@echo off
setlocal

echo Select an option:
for /F "delims=" %%a in ('mshta.exe "%~F0"') do set "HTAreply=%%a"
echo End of HTA window, reply: "%HTAreply%"
goto :EOF
-->


<HTML>
<HEAD>
<HTA:APPLICATION SCROLL="no" SYSMENU="no" >
<body bgcolor="cyan">
<TITLE>HTA Buttons</TITLE>
<SCRIPT language="JavaScript">
window.resizeTo(374,100);

function closeHTA(reply){
   var fso = new ActiveXObject("Scripting.FileSystemObject");
   fso.GetStandardStream(1).WriteLine(reply);
   window.close();
}

</SCRIPT>
</HEAD>
<BODY>
   <button onclick="call C:\Users\user1\Documents\bat1.bat";closeHTA(1);>Bat1</button>
   <button onclick="call C:\Users\user1\Documents\bat2.bat;closeHTA(2);">Bat2</button>
   <button onclick="call C:\Users\user1\Documents\bat3.bat;closeHTA(3);">Bat3</button>
</BODY>
</HTML>

我面临几个问题:

  1. 我在第<button onclick="call C:\Users\user1\Documents\bat1.bat";closeHTA(1);>Bat1</button>行中遇到错误,说如下所示需要分号,我不确定这是否是在此部分调用批处理文件的正确方法? enter image description here
  2. 我如何拥有一个文本框,以便输入参数并将其传递给其中一个批处理文件?
  3. GUI和cmd没有锚定,因此如果我关闭cmd按钮的GUI仍然存在且不关闭,如下所示: enter image description here

1 个答案:

答案 0 :(得分:2)

试试这样:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
    <table>
        <tr>
            <td></td><td id="0-1"><span id="p1-p1" class="dot"></span></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
        </tr>

        <tr>
            <td class="movable" id="1-1"></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
        </tr>

        <tr>
            <td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
        </tr>

        <tr>
            <td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
        </tr>

        <tr>
            <td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
        </tr>

        <tr>
            <td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
        </tr>

        <tr>
            <td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
        </tr>

        <tr>
            <td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
        </tr>

        <tr>
            <td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
        </tr>

        <tr>
            <td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
        </tr>
    </table>
</body>

使用javascript或html时,你需要加倍反斜杠。你不能直接从HTA调用蝙蝠,但是你需要使用<!-- :: Batch section @echo off setlocal echo Select an option: for /F "delims=" %%a in ('mshta.exe "%~F0"') do set "HTAreply=%%a" echo End of HTA window, reply: "%HTAreply%" goto :EOF --> <HTML> <HEAD> <HTA:APPLICATION SCROLL="no" SYSMENU="no" > <body bgcolor="cyan"> <TITLE>HTA Buttons</TITLE> <SCRIPT language="JavaScript"> window.resizeTo(374,100); function closeHTA(reply){ var fso = new ActiveXObject("Scripting.FileSystemObject"); fso.GetStandardStream(1).WriteLine(reply); window.close(); } function callShellApplication(command){ var r = new ActiveXObject("WScript.Shell"); var res=r.Exec(command); new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(res.StdOut.ReadLine()); window.close(); } </SCRIPT> </HEAD> <BODY> <button onclick='callShellApplication("C:\\test.bat")'>Bat1</button> <button onclick='callShellApplication("C:\\Users\\user1\\Documents\\bat2.bat")'>Bat2</button> <button onclick='callShellApplication("C:\\Users\\user1\\Documents\\bat2.bat")'>Bat3</button> </BODY> </HTML>

编辑要传递参数(如评论中的请求),您可以尝试类似的内容:

WScript.Shell object
相关问题