我有一个通过Windows控制台运行的exe,并提示三个问题的响应。我创建了一个包含标准的批处理文件,并希望自动化所有三个问题的响应,因此选择bat文件会运行批处理文件中的数据。
我需要通过以下标准 1)机器名称 (输入) 2)密码 (输入) 3)备份 (回车)
我试过" machinename | exe文件"它运行正常,然后提示2)的答案。我想回答所有三个提示,然后运行exe。
答案 0 :(得分:0)
假设所有输入都是通过stdin执行的,那么管道或重定向都适用于所有三个输入。
最简单的方法是创建临时响应文件并使用重定向。
@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
但是有一个问题 - 解析器在每个&
和)
之前插入一个空格。这可能会破坏事情。
请注意,管道的每一侧都是通过cmd /c
执行的,因此每一侧都会被解析两次。它是插入不需要的空间的初始管道解析器。
我发现防止额外空间的最简单方法是延迟&
的出现,以便解析器最初认为整个左侧是单个ECHO命令。
@echo off
setlocal
set "+=&"
echo machinename%%+%%echo password%%+%%echo backup|prog.exe
修改强>
您的程序在密码提示符处挂起的事实意味着密码是直接从控制台读取的,而不是通过stdin读取的。在这种情况下,您需要freeware AutoIT utility。
之类的内容