如何从 HTA 文件向同一个 cmd 实例发送多个命令?

How can I send several commands to the same cmd instance from HTA file?

我在 HTA 文件中使用 WScript.Shell 启动了一个 cmd 实例。 cmd window 已打开并准备接收命令。我怎样才能在那里发送命令?

<html>
<head>
<script language="javascript">
var wsh = new ActiveXObject('WScript.Shell');
var cmd = wsh.Exec("cmd.exe");
function to_cmd(a_command){
    cmd.Exec(a_command);
}
</script>
<title>UI</title>
<hta:application id="app">
</head>
<body>
    <input type=button onclick="to_cmd('dir')">
</body>
</html>

是的,此代码包含错误,因为我仍然找不到正确的方法或对象来以正确的方式执行此操作。

可以是任何方法(不仅与我的相似)。主要思想是能够通过单击 HTML 按钮向同一个 cmd window 发送不同的命令。

不,我不想直接向 shell 对象发送单独的命令。

您可以通过直接写入进程来完成此操作 StdIn:

// Create a shell
var shell = new ActiveXObject('WScript.Shell');

// Open the command prompt with /k flag to keep it open
var cmd = shell.exec('%comspec% /k');

// Method to write to the prompt's StdIn and redirect output to the console
// NOTE: If you want a blank console screen, remove just the ">CON" text
var runCommand = function(command) {
  cmd.StdIn.Write(command + ' >CON\n');
};

// Run a command
runCommand('echo Hello');

// Run another one after 1.5 seconds
setTimeout(function() {
  runCommand('echo World!');
}, 1500);