Discussion:
how to pass /E:ON argument to cmd.exe using exec (Windows)
(too old to reply)
Michael Soyka
2024-09-30 15:35:30 UTC
Permalink
For a change of pace, this will not be a Tcl 9 question (I'm using 8.6.14).

Using tclsh, why does this succeed:
exec -- cmd /C dir

but this fails:
exec -- cmd /C /E:ON dir

with this message :
"The filename, directory name, or volume label syntax is incorrect."

I'm guessing that "exec" is treating /E:ON as a file spec (the colon
maybe?) and then changes it somehow.

A followup question is how can I see what string is being presented to
to Windows?

Thanks for answering.

-mike
Ashok
2024-09-30 16:34:31 UTC
Permalink
Nothing to do with Tcl 8.6 either :-)


From the DOS prompt:

D:\src\tcl-csv\library>cmd /C /E:ON dir
The filename, directory name, or volume label syntax is incorrect.

The /C needs to be before dir

D:\src\tcl-csv\library>cmd /E:ON /C dir
Volume in drive D is DATA
Volume Serial Number is 8245-4F72

Directory of D:\src\tcl-csv\library
....
Post by Michael Soyka
For a change of pace, this will not be a Tcl 9 question (I'm using 8.6.14).
    exec -- cmd /C dir
    exec -- cmd /C /E:ON dir
    "The filename, directory name, or volume label syntax is incorrect."
I'm guessing that "exec" is treating /E:ON as a file spec (the colon
maybe?) and then changes it somehow.
A followup question is how can I see what string is being presented to
to Windows?
Thanks for answering.
-mike
Michael Soyka
2024-09-30 16:57:07 UTC
Permalink
Once again, read the fine manual before blaming Tcl!

Thanks Ashok!

And by the way, I love your book!

-mike
Post by Ashok
Nothing to do with Tcl 8.6 either :-)
D:\src\tcl-csv\library>cmd /C /E:ON dir
The filename, directory name, or volume label syntax is incorrect.
The /C needs to be before dir
D:\src\tcl-csv\library>cmd /E:ON /C dir
 Volume in drive D is DATA
 Volume Serial Number is 8245-4F72
 Directory of D:\src\tcl-csv\library
....
Post by Michael Soyka
For a change of pace, this will not be a Tcl 9 question (I'm using 8.6.14).
     exec -- cmd /C dir
     exec -- cmd /C /E:ON dir
     "The filename, directory name, or volume label syntax is incorrect."
I'm guessing that "exec" is treating /E:ON as a file spec (the colon
maybe?) and then changes it somehow.
A followup question is how can I see what string is being presented to
to Windows?
Thanks for answering.
-mike
et99
2024-09-30 18:15:53 UTC
Permalink
A followup question is how can I see what string is being presented to to Windows?
My goto tool is process explorer, much more detailed that windows task manager, just hover mouse over any process and it will tell you the command line that was ultimately received (or click and choose properties)

https://learn.microsoft.com/en-us/sysinternals/downloads/process-explorer

This is a no-install program, you can just run it.

Using twapi, and if you exec with & you will get the pid, you can then use:

twapi::get_process_commandline PID ?options?


-e
et99
2024-09-30 18:33:14 UTC
Permalink
Post by et99
A followup question is how can I see what string is being presented to to Windows?
My goto tool is process explorer, much more detailed that windows task manager, just hover mouse over any process and it will tell you the command line that was ultimately received (or click and choose properties)
https://learn.microsoft.com/en-us/sysinternals/downloads/process-explorer
This is a no-install program, you can just run it.
twapi::get_process_commandline PID ?options?
-e
Hmmm, it just occurred to me that if the process dies immediately, you might not have a chance with process explorer, and don't know if the get_process_commandline will be quick enough either.
Michael Soyka
2024-09-30 21:03:59 UTC
Permalink
Post by et99
Post by et99
A followup question is how can I see what string is being presented to to Windows?
My goto tool is process explorer, much more detailed that windows task
manager, just hover mouse over any process and it will tell you the
command line that was ultimately received (or click and choose
properties)
https://learn.microsoft.com/en-us/sysinternals/downloads/process-explorer
This is a no-install program, you can just run it.
twapi::get_process_commandline PID ?options?
-e
Hmmm, it just occurred to me that if the process dies immediately, you
might not have a chance with process explorer, and don't know if the
get_process_commandline will be quick enough either.
Yes, in my case, the process would die almost immediately but, if /K is
used instead of /C, the process does hang around and your suggestions
would work. Thanks for the advice.
-mike

Loading...