我正在尝试通过powershell将带有参数的.txt文件传递给.exe文件。目前,这就是我所拥有的。
Write-Host "starting upgrade at $(Get-Date -format 'U')"
C:\dev\temp.exe.exe /DIR="C:\TEST" /BTPServerHost="Test" /DBInstance="testDB" /Log=C:\path\to\test\testlog.txt
这正在InnoScript文件中调用一个接受命令行输入的函数。
我将如何格式化.txt文件,以及如何将其传递到.exe?任何帮助,将不胜感激!谢谢!
答案 0 :(得分:0)
此脚本从txt文件中获取参数,并将其传递到可执行文件中,并自动填充安装向导中的字段。这是我想要做的,但是我不想为输入txt文件中的每个参数启动新的过程。
Write-Host "starting upgrade at $(Get-Date -format 'U')" Get-Content -Path C:\TestInput.txt -Raw | foreach {Start-Process C:\dev\test.exe -ArgumentList $_}
传入的TestInput.txt文件如下:
/DIR="C:\TEST"
/ServerHost="Test"
/DBInstance="testDB"
/Log=C:\testlog.txt
答案 1 :(得分:0)
如果您要说的是,在此文本文件中,单独的行上只有这些自变量行,您是在说您已经尝试了以下类似操作,但未成功?
消息行也不需要Write-Host,因为默认值输出到屏幕。通常,您只需要Write-Host来为屏幕文本着色,以及其他几种格式化情况,具体取决于您在做什么。全部避免,应该避免写主机。
"starting upgrade at $(Get-Date -format 'U')"
($ConsoleCommand = Get-Content -Path 'd:\temp\input.txt' -Raw)
# Results - showing the commands in the file before process them
whoami
get-date
'hello world'
不使用-Wait开关,这将产生3个单独的PowerShell控制台并显示结果
ForEach($CmdLine in $ConsoleCommand)
{ Start-Process -FilePath powershell -ArgumentList "-NoExit","-Command &{ $CmdLine }" }
您当然可以指向您的.exe与我在这里所做的事情。
通过在指定.txt文件路径后添加-Raw,它将忽略换行符,并以保留换行符的一个字符串返回文件的全部内容。默认情况下,文件中的换行符用作分隔符,以将输入分成字符串数组。