2

コマンドモードでの文字列拡張のルールは何ですか?cmd.exeの場合、次のように記述します。

c:\asdoc.exe -doc-sources+=src

これを文字列に変換する必要があります。この文字列では、実際のソースパス( "src")が計算されるため、この行の上のどこか$sourcePath = "src"で実行されます。次に、そのcmd.exeコマンドをPowerShellコマンドに変換する必要があります。次のことを試しましたが、機能しません。

& c:\asdoc.exe -doc-sources+=$sourcePath    # does NOT work
& c:\asdoc.exe -doc-sources+="$sourcePath"  # does NOT work
& c:\asdoc.exe -doc-sources+=($sourcePath)  # does NOT work

EchoArgsユーティリティを使用したところ、次のような結果が得られました。

Arg 0 is <-doc-sources+=$sourcePath> # case 1

Arg 0 is <-doc-sources+=$sourcePath> # case 2

Arg 0 is <-doc-sources+=>            # case 3
Arg 1 is <src path>

この例で文字列を「正しく」展開するにはどうすればよいですか?

4

1 に答える 1

3

私があなたを正しく理解しているなら、あなたはすべてを拡張し、単一の議論として望んでいます。引数を引用符で「収集」してみてください。

PS > $sourcepath = "src"

PS > & EchoArgs.exe "-doc-sources+=$($sourcePath)"
Arg 0 is <-doc-sources+=src>

だからこれを試してみてください:

& c:\asdoc.exe "-doc-sources+=$($sourcePath)"

以下の例は、変数内のプロパティではなく変数を展開したいので、長く機能します(ex $myobject.sourcepath

& c:\asdoc.exe "-doc-sources+=$sourcePath"
于 2013-03-07T21:53:53.557 に答える