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)"

下面的示例也可以在您想要扩展变量而不是变量内的属性时使用(例如 $myobject.sourcepath

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