2016-12-02 30 views
0

最近、PowerShellを使い始めました。私は.jarファイルの実行に関する問題にぶつかりました。簡単に言えば、私はplantumlを使用しています。私は単にそれを実行する "plantuml"コマンドを持っていたいと思います。通常、プログラムを実行するには、入力します。 java -jar C:\Users\Name\Documents\WindowsPowerShell\Commands\plantuml.jar。これはもちろんかなりのもので、簡略化するとplantumlです。 PowerShellはそれらをインターセプトし、関数のパラメータとしてそれらを解釈するので、しかし、私は、このような.jarファイルに任意のパラメータを渡すことはできません function plantuml($UmlPath, $ImgPath) { java -jar C:\Users\Name\Documents\WindowsPowerShell\Commands\plantuml.jar $UmlPath $ImgPath } PowerShellのCのようなマクロ展開

私の現在の回避策は、次の関数です。これに対する現行の回避策は引用符で囲むことですが、私はこれが醜いと判断し、よく忘れます。

plantumlと入力するだけで、PowerShellによってjava -jar C:\Users\Name\Documents\WindowsPowerShell\Commands\plantuml.jarに展開されるような方法はありますか?私が見つけた唯一の同様の質問はthis oneでしたが、実際の回答はないようです。

私がテストしplantumlまたは類似した何かを持っていないが、あなたは $args変数と関数に渡されるすべてのパラメータを取得することができますので、このアプローチはうまくいくかもしれない
+0

あなたが合格する必要がある場合追加のパラメータとして、 '$ params'のような関数に追加のparamを追加して、コマンドの最後に追加したいパラメータを表す文字列を送ると、奇妙な構文に終わるでしょうあなたはそれが少なくともあなたにタイピングの束を救うだろうということを認識していました。 –

+0

この資料のアドバイスは、[Windows IT Pro - PowerShellで実行可能ファイルを実行する](http://windowsitpro.com/powershell/running-executables-powershell)を参照してください。 –

+0

また、「Powershellがそれらを傍受して関数パラメータとして解釈するため、このような.jarファイルにパラメータを渡すことはできません」という意味の例を挙げてください。 –

答えて

0

function plantuml { 

    # Array of your default arguments to Java.exe to start plantuml 
    $arguments = @('-jar', 
       'C:\Users\Name\Documents\WindowsPowerShell\Commands\plantuml.jar') 

    # All arguments passed to this function, umlpath, imgpath, and anything else 
    # are in the special variable $args, add those into the array as well. 
    $arguments += $args 

    Start-Process Java -ArgumentList $arguments 
} 
+0

私はこの答えが正しい方向に進んでいると思います!しかし、Plantumlテストポイントを実行すると期待される動作は、出力がPowerShellターミナル自体にあるのに対し、Javaプロセスの新しいターミナルを開くように見えます。その後、すぐに再び閉じます。これの最大の欠点は、ウィンドウがすぐに閉じるため、印刷結果が表示されないことです。何か案は? – PostLee

+0

更新:-NoNewWindowパラメータを渡すと、それが修正されましたが、端末はPlantumlが終了するのを待たず、出力が奇妙な場所にあります(つまり、書き込みを開始すると出力が上書きされます)。私は追加してみました - 待って、それは何も効果がないようです。 * EDIT *:上記を無視してください。-Waitパラメータが突然動いたので、PowerShellをリロードするのを忘れてしまったようです。ご協力ありがとうございました! – PostLee

+0

@postlee - NoNewWindowは良いキャッチで、私はあなたがうれしく思っています - うまくいっているか、それ以外に何を示唆していないのでしょうか? – TessellatingHeckler

関連する問題