I've noticed subtle differences in execing a batch file on MS Windows with or without prepending the call with the command interpreter, cmd.exe. Here's an example:

(portal_01024) 2 % cd c:/iskv/portal_01024
(portal_01024) 3 % glob *
config cti dist help resource resource_cti start_portal.bat
(portal_01024) 4 % exec -- start_portal.bat
Unable to access jarfile c:\iskv\21c_winbk_\bin\csvstart.jar        <==== batch starts, but somethings going wrong internally
Das System kann den angegebenen Pfad nicht finden.
(portal_01024) 6 % exec -- cmd.exe /c start_portal.bat &            <==== this works the same way as if i call the batch from outside of tcl
4660
(portal_01024) 7 % exec -- [auto_execok start_portal.bat]           <==== didn't help
Unable to access jarfile c:\iskv\21c_winbk_\bin\csvstart.jar
Das System kann den angegebenen Pfad nicht finden.

Don't know what's going on yet.

If I use auto_execok xyz.BAT, it gives back ./xyz.BAT, which makes not much sense, since Batches are always interpreted by the command interpreter, cmd.exe, on windows, and ar not executable by themselves. exec bat and exec auto_execok are basically the same and both don't work for me in all cases, since the environment of the BAT is then different than if called via cmd.exe.

  • So What does tcl do when execing a BAT? It must be something different than cmd.exe /c bat.