Search code examples
stringtclpathname

String path with spaces in TCL not working


Why can't i do this in TCL:

set path "|C:/Program Files/Example/My Program/prgrm.exe"

The string path will get the value:

"C:/Program".

But if I remove the spaces it will get the full path... Anyone got an idea?


Solution

  • It's because the code for running a subprocess with pipe takes a Tcl list after the | character. Build and run it like this:

    set path "C:/Program Files/Example/My Program/prgrm.exe"
    set pipe [open |[list $path]]
    

    (Later items in that list are the arguments to pass to prgrm.exe.)