Akk*_*kki 1 powershell jar execute executable-jar
我想从powershell运行一个jar文件.直到现在我能够找到这个:
Start-Process -FilePath java -ArgumentList '-jar Upload_Download.jar FilePickupPath= $pickuppath FileDownloadPath= $download' -PassThru -RedirectStandardError E:\stderr.txt
Run Code Online (Sandbox Code Playgroud)
一些如何不起作用.有什么建议?
Powershell有多个字符串引号字符,其行为方式不同.双引号"允许在字符串中进行评估,而单引号'则不允许.
作为一个实际的例子:
$foo=42
write-host "The foo: $foo"
# Prints The foo: 42
write-host 'The foo: $foo'
# Prints The foo: $foo
Run Code Online (Sandbox Code Playgroud)
该命令使用单引号,(反引号用于将代码拆分为屏幕友好格式)
Start-Process -FilePath java `
-ArgumentList '-jar Upload_Download.jar FilePickupPath= $pickuppath fileDownloadPath= $download' `
-PassThru -RedirectStandardError E:\stderr.txt
Run Code Online (Sandbox Code Playgroud)
这将通过字面意思$pickuppath和$download.其意图可能是通过$pickuppath和$download的值.
要解决此问题,请使用双引号.
传递参数通常是一个问题,所以我使用数组,
还可以通过使用参数分散来避免长线。
if(-not $env:JAVA_HOME)
{
Write-Error "JAVA_HOME not set"
break
}
$params = @{
FilePath = [string]::Format("{0}\bin\java.exe",$env:JAVA_HOME)
WorkingDirectory = "D:\SDL\Web\live\discovery\config\"
ArgumentList = @("-jar", "discovery-registration.jar", "update")
RedirectStandardError = "c:\temp\JavaError.txt"
PassThru = $true
Wait = $true
}
$p = Start-Process @params
if($p.ExitCode -eq 0)
{
Write-Output "Discovery Registration complete"
}
else
{
Write-Output "Discovery Registration failed"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14610 次 |
| 最近记录: |