2

What are the rules of string expansion in command mode? If on cmd.exe, I would write this:

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

I need to convert this to a string where the actual source path ("src") is computed so somewhere above this line, $sourcePath = "src" is executed. Now I need to transform that cmd.exe command to PowerShell command. I have tried the following but it doesn't work:

& 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

I used the EchoArgs utility and it gives me these results:

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>

How do I make the string expand "correctly" in this example?

1 Answer 1

3

If i understand you properly you want everything expanded and as a single argument. Try to "collect" the argument with quotes.

PS > $sourcepath = "src"

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

So try this:

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

The example below will also works AS LONG as you want to expand a variable an not a property inside a variable (ex $myobject.sourcepath)

& c:\asdoc.exe "-doc-sources+=$sourcePath"
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.