5

任意の数の引数 (ファイルのリスト) を取り、次のコマンド構造で powershell スクリプトを実行するバッチ スクリプトがあります。

"%POWERSHELL%" -Command "%SCRIPT%" %*

%POWERSHELL%は へのパスPowerShell.exeであり、それをとして%SCRIPT%解釈する私の PowerShell スクリプトです。問題は、 filename のようなものを渡すと、おそらく空の変数として解釈されるため、PowerShell が受け取ることです。%*$argstest$file.nametest.name$file

バッチスクリプトから一重引用符またはバッククォートを使用して各引数をエスケープする、またはこれに対処する良い方法はありますか?

4

1 に答える 1

5

%* を PowerShell スクリプトに渡す前に、$ 文字をエスケープします。

set ARGS=%*
set ARGS=%ARGS:$=`$%
"%POWERSHELL%" -Command "%SCRIPT%" %ARGS%
于 2012-09-01T00:33:26.790 に答える