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