I am in need to redirect output of program to a file and below is the code that I am using to create the output log file name:
set filename \"C:\\tools\\tcl\\bin
Tcl
will do backslash substitution and these substitution will happen only with double quotes. If you need a literal backslash, you have to escape it. When enclosed with braces, these substitution will not happen.
So, you can define your variable as
set filename "C:\\tools\\tcl\\bin\\my.log"
or
set filename {C:\tools\tcl\bin\my.log}
About the command line argument stuff, don't bother. Tcl
will take care of it. It will be received as it is from your terminal.
But this prints :
The log file C: ools cinmy.log
This is because a literal string between double quotes is subjected to backslash substitution. For example, "\t"
is interpreted as the tab control character, and not as a file-path element with \
as separator.
Your options:
"\t"
becomes "\\t"
"\t"
becomes {\t}
Use Tcl's [file] command to assemble the file path:
file nativename [file join C:/ tools tcl bin my.log]
The latter option is the preferred one.