使用powershell自动执行批处理文件提示

时间:2016-08-22 13:48:32

标签: powershell batch-file prompt

我有一个批处理文件,会提示用户几次。我希望用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脚本中的变量,但其他变量将是静态的。此外,在脚本结束时,您需要按任意键继续。

有没有办法做到这一点?

2 个答案:

答案 0 :(得分: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没有使用该提示;因为空条目不是接受后,再次出现提示。)

答案 1 :(得分:0)

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"