响应多个命令行提示

Responding to Multiple Command Line Prompts

我有一个 exe 运行 通过 Windows 控制台并提示回答三个问题。我创建了一个包含标准的批处理文件,并希望自动对问题进行所有三个响应,因此选择 bat 文件 运行s 批处理文件中的数据。

我需要通过以下标准 1)机器名称 (进入) 2)密码 (进入) 3)备份 (输入)

我试过 "machinename| exe" 并且 运行 没问题,然后提示 2) 的答案。我想回答所有三个提示,然后 运行 exe。

假设所有输入都通过标准输入执行,那么管道或重定向应该适用于所有三个输入。

最简单的方法是创建一个临时响应文件并使用重定向。

@echo off
>response.tmp (
  echo machinename
  echo password
  echo backup
)
<response.tmp prog.exe
del response.tmp

使用管道并摆脱临时文件似乎很容易

(echo machinename&echo password&echo backup)|prog.exe

但是有一个问题 - 解析器在每个 &) 之前插入一个 space。这可能会破坏事情。

请注意,管道的每一侧都是通过 cmd /c 执行的,因此每一侧都被解析了两次。它是插入不需要的 space.

的初始管道解析器

我发现防止额外 space 的最简单方法是延迟 & 的出现,以便解析器最初认为整个左侧是单个 ECHO 命令。

@echo off
setlocal
set "+=&"
echo machinename%%+%%echo password%%+%%echo backup|prog.exe

编辑

您的程序在密码提示处挂起这一事实意味着密码是直接从控制台读取的,而不是通过标准输入。在这种情况下,您将需要 freeware AutoIT utility.

之类的东西