【问题标题】:Automate batch file prompts with powershell使用 powershell 自动化批处理文件提示
【发布时间】:2016-08-22 13:48:32
【问题描述】:

我有一个批处理文件,它会提示用户几次。我正在寻找使用 powershell 自动化它。有没有办法做到这一点?我需要这样的东西:

Start-Process $InstallDir\Install.bat "y,*,$Version,y,y,y,y,y,y,y,y,y,y,y,y,y"

Install.bat 运行安装,总共有 16 个提示。第三个我希望成为我的 powershell 脚本中已有的变量,但其他变量将是静态的。此外,在脚本结束时,您需要按任意键继续。

有什么办法吗?

【问题讨论】:

  • 这取决于批处理文件实际在做什么。不过,简单地传递一个字符串参数是行不通的。
  • 根本不调用批处理文件。将批处理文件中的命令放入新的 PowerShell 脚本中并删除提示。
  • @Bill_Stewart 这是一个选项,但是批处理文件很长,需要一些时间来完成。我希望有一个更快的解决方案,但如果没有其他方法,我可以诉诸于此。
  • 如果您需要自动化,听起来这是值得做的事情。
  • @Bill_Stewart 事实证明我无法编辑批处理文件,所以我需要找到一种方法来传递这些参数。

标签: powershell batch-file prompt


【解决方案1】:

根据您的批处理文件和实际执行提示的命令,您可以使用input redirection<。将提示逐行放入文本文件中,然后将其重定向到批处理文件中。

假设批处理文件prompts.bat 包含以下命令...:

@echo off
set /P VAR="Please enter some text: "
echo/
echo Thank you for entering "%VAR%"!
choice /M "Do you want to continue "
if not ErrorLevel 2 del "%TEMP%\*.*"
pause

...文本文件prompts.txt 包含以下几行...:

hello world
Y
n
End

...命令行prompts.bat < prompts.txt 的控制台输出将是:

Please enter some text:
Thank you for entering "hello world"!
Do you want to continue [Y,N]?Y
C:\Users\operator\AppData\Local\Temp\*.*, Are you sure (Y/N)?
C:\Users\operator\AppData\Local\Temp\*.*, Are you sure (Y/N)? n
Press any key to continue . . .

(del 命令在此处显示两个提示,因为它接收到 Y 后面的 RETURN 不被 choice 使用;由于不接受空条目,因此提示出现一个更多时间。)

【讨论】:

  • 虽然这在理论上很有效,但对我来说似乎有点太快了。我正在使用的批处理文件在每个提示后复制一个文件,这需要一段时间,所以在第一个文件之后,似乎所有剩余的提示都留空。有什么办法吗?
  • 很难说没有看到批处理文件和提示的命令...让我建议为此提出一个新问题...
  • 啊,你做到了;参考链接:Input redirects not working with batch file prompts
【解决方案2】:

Read-Host 将显示输入提示,将其分配给变量意味着您可以稍后在脚本中使用该条目。

由于您的示例不具体,因此下面只会让您了解您需要做什么。

$InstallDir = "C:\folder"
$Version = Read-Host -Prompt "Enter Version Number"
Start-Process "$InstallDir\Install.bat" -ArgumentList "y,*,$Version,y,y,y,y,y,y,y,y,y,y,y,y,y"

【讨论】:

  • 是的,但我的问题是如何将这些参数传递到批处理文件中。不幸的是,您不能只使用-ArgumentList 将答案传递给提示,所以我正在寻找另一种方法。
猜你喜欢
  • 2016-06-18
  • 1970-01-01
  • 2018-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-15
  • 2013-06-27
相关资源
最近更新 更多