user18994682
user18994682

Reputation:

Reading cmd arguments in TCL file

I am trying to run a tcl script through .bat file. I want to read some cmd arguments in the tcl script. Below is my code:

Command to run:

D:\Cadence\Sigrity2021.1\tools\bin\PowerSI.exe -tcl abcd.tcl %new_var%.spd %new_file_name%

Below is how I am trying to read the variable in the tcl file:

sigrity::open document [lindex $argv 0] {!}

It open up the Cadence Sigrity, but I see the below error:

screenshot of error

How do I read cmd argument in tcl?

Upvotes: 0

Views: 701

Answers (1)

Donal Fellows
Donal Fellows

Reputation: 137627

If you have no other way to do it that you can find (and it sounds like that might be the case) then you can fake it by writing a helper file with content like this, filling in the real arguments in the appropriate places:

# Name of script to call
set ::argv0 "abcd.tcl"
# Arguments to pass
set ::argv {}
lappend ::argv "%new_var%.spd"
lappend ::argv "%new_file_name%"
# Number of arguments (rarely used)
set ::argc [llength $::argv]
# Do the call
source $::argv0

Then you can pass that file to PowerSI and it will set things up and chain to the real file. It's messy, but practical.


If you're writing this from Tcl, use the list command to do the quoting of the strings (instead of putting them in double quotes) as it will do exactly the right thing for you. If you're writing the file from another language, you'll want to make sure you put backslashes in before \, ", $ and [ characters. The fiddlyness of doing that depends on your language.

Upvotes: 0

Related Questions