1

私はこれが簡単でなければならないことを知っていますが、それを行う方法がわかりません。XML 経由で読み込まれている変数に文字列があります。変数は $software と呼ばれ、その値は Java Flash Reader "Flash (IE)" です。

これは、後でコマンドラインから起動されます。

C:\Deployment\Ninite\NiniteOne.exe /select $xmlsoftware $installtype /remote file:"$NiniteTargets" $shortcuts $autoupdate /cachepath "$NiniteCache" $userinterface "$NiniteLog"

「Flash (IE)」部分に到達すると、コマンドが中断されます。その変数に括弧が入っていると何かが起こっていると思いますが、よくわかりません。どんな助けでも大歓迎です。

4

2 に答える 2

1

まず第一にcmd、プログラムを実行するためだけに委任するのはなぜですか? PowerShell もシェルです。

blabla.exe /select $software /silent

しかし、問題はそれよりも少し複雑ですcmd。 の引数解析の複雑さが取り除かれても、

PS> $software = 'Java Flash Reader "Flash (IE)"'
PS> .\echoargs.exe /select $software /silent
arg 1: /select
arg 2: Java Flash Reader Flash
arg 3: (IE)
arg 4: /silent

値の引用符を次のように置き換えて、\"機能させることができます。

PS> $software = $software -replace '"', '\"'
PS> .\echoargs.exe /select $software /silent
arg 1: /select
arg 2: Java Flash Reader "Flash (IE)"
arg 3: /silent
于 2012-08-01T12:00:15.540 に答える
0

$software次のように宣言してみてください。

$software = $('Java Flash Reader "Flash (IE)"')

もう 1 つのオプションは、次のように宣言することです。

$software = "Java Flash Reader `"Flash `(IE`)`""

(andをエスケープするためにバックティックを追加する"

于 2012-08-01T15:29:04.867 に答える