2017-01-12 256 views
0

powershellからjarファイルを実行します。今まで私はこれを見つけることができました:powershellからjarファイルを実行します。

Start-Process -FilePath java -ArgumentList '-jar Upload_Download.jar FilePickupPath= $pickuppath FileDownloadPath= $download' -PassThru -RedirectStandardError E:\stderr.txt 

これはどのように動作していないいくつか。助言がありますか?

+0

正確に「これは機能していません」とはどういう意味ですか?何も起こりません?間違ったことが起こる? – vonPryz

答えて

4

Powershellには、異なる動作をする複数の文字列引用文字があります。二重引用"は、一重引用符'ではなく、文字列内の評価を可能にします。

具体例として:コマンドは

Start-Process -FilePath java ` 
-ArgumentList '-jar Upload_Download.jar FilePickupPath= $pickuppath fileDownloadPath= $download' ` 
-PassThru -RedirectStandardError E:\stderr.txt 

(バッククォートは、画面やすい形式にコードを分割するために使用されている)ので、同様に単一引用符を使用し

$foo=42 
write-host "The foo: $foo" 
# Prints The foo: 42 
write-host 'The foo: $foo' 
# Prints The foo: $foo 

これは文字通り$pickuppathを通過し、 $download。意図は、$pickuppath$downloadの値を渡す可能性が高いです。

問題を解決するには、二重引用符を使用してください。

+0

ありがとうございました! – Akki

0

が2つのJREのバージョンがあり、1つのJDKがインストールされているため私の問題は少し違っていたとPowerShellが常にJREベースのJava実行可能ファイルをピックアップし、JDKがインストールされ、JAVA_HOME変数があったが、メッセージ

C:\Program Files\Java\jre1.8.0_73 is not a valid JDK Java Home. 

で失敗しました変数を設定して終了すると、jdkパスが正しく表示されます。私は変数にJDKのjava実行可能ファイルのパスを格納し

> $env:JAVA_HOME 
C:\Program Files\Java\jdk1.8.0_73 

は、ウェブロジックサーバ用のjarファイルを含むディレクトリにナビゲートし、次のコードを使用してインストールプログラムを起動しました。

$java="C:\Program Files\Java\jdk1.8.0_73\bin\java" 
Start-Process -FilePath $java -ArgumentList '-jar fmw_12.2.1.3.0_infrastructure_generic.jar' 

数秒後にインストールプログラムが開きます。私は最初に何かエラーをキャッチするために使用したが、コマンドを小さく単純に保つために-RedirectStandardErroスイッチを省いた。

変数$ fmwを​​使ってjarファイルfmw_12.2.1.3.0_infrastructure_generic.jarを保存しようとしましたが、動作しませんでした。私は、これは誰かと誰かが私にPowerShellでjarファイルを呼び出すためのより良いとクリーンな方法を提供するかもしれない役立つだろう願ってい

$fmw="fmw_12.2.1.3.0_infrastructure_generic.jar" 
Start-Process -FilePath $java -ArgumentList '-jar $fmw' 

を次のように失敗したコードです。

関連する問題