I was originally trying to run an executable (tftpd32.exe) from Expect with the following command, but for some unknown reason it would hanged the entire script:
exec c:/tftpd32.351/tftpd32.exe
So, decided to call a batch file that will start the executable.
I tried to call the batch file with the following command, but get an error message stating windows cannot find the file.
exec c:/tftpd32.351/start_tftp.bat
I also tried the following, but it does not start the executable:
spwan cmd.exe /c c:/tftpd32.351/start_tftp.bat
The batch file contains this and it run ok when I double click on it:
start tftpd32.exe
Any help would be very much appreciated.
Thanks
The right way to run that program from Tcl is to do:
Note that you should always have that extra empty argument when using
start(due to the weird way thatstartworks; it has an optional string in quotes that specifies the window title to create, but it tends to misinterpret the first quoted string as that even if that leaves it with no mandatory arguments) and you need to use the native system name of the executable to run, hence thefile nativename.If you’ve got an older version of Tcl inside your
expectprogram (8.4 or before) you’d do this instead:The
listcommand in that weirdeval execconstruction adds some necessary quoting that you’d have trouble generating otherwise. Use it exactly as above or you’ll get very strange errors. (Or upgrade to something where you don’t need nearly as much code gymnastics; the{*}syntax was added for a good reason!)