如何用PowerShell脚本自动填充.cmd文件的连续交互式提示
处理.cmd连续交互式提示的PowerShell自动填充方案
方法1:输入重定向法
把需要依次输入的答案按顺序每行写一个,保存为answers.txt文件,然后在PowerShell中执行:
.\targetscript.cmd < answers.txt
该方法要求.cmd脚本是从标准输入读取用户输入,每个答案对应一次换行输入。
方法2:管道直接传递输入
无需生成临时文件,直接在PowerShell中构造连续输入流传递给.cmd:
"第一个答案`n第二个答案`n第三个答案" | .\targetscript.cmd
用n作为换行分隔符,确保每个答案对应.cmd的一次交互式提示。
方法3:Start-Process精确控制输入
适合需要控制输入时机的场景(比如部分提示有加载延迟):
# 启动.cmd进程并获取输入句柄 $process = Start-Process -FilePath .\targetscript.cmd -NoNewWindow -PassThru -RedirectStandardInput $null $inputWriter = $process.StandardInput # 按顺序写入答案,必要时添加等待 $inputWriter.WriteLine("第一个答案") Start-Sleep -Milliseconds 300 # 根据实际延迟调整 $inputWriter.WriteLine("第二个答案") $inputWriter.WriteLine("第三个答案") # 关闭输入流并等待进程结束 $inputWriter.Close() $process.WaitForExit()
注意:该方法仅适用于读取标准输入的.cmd程序,若程序直接读取控制台缓冲区则无法生效。
注意事项
- 先手动运行目标.cmd脚本,记录每个提示对应的输入内容和顺序,确保答案匹配
- 若提示是Y/N选项,直接将
Y/N按顺序放入输入流即可 - 若上述方法失效,说明.cmd程序采用了直接读取控制台的方式,需借助专门的自动化工具实现,但此类工具不在PowerShell原生范围内
内容的提问来源于stack exchange,提问作者KaHinCostner
相关产品推荐
相关产品推荐

