使用tcl/tk顺序运行cir和net文件

使用tcl/tk顺序运行cir和net文件,tcl,pspice,orcad,Tcl,Pspice,Orcad,我想给我一些关于使用cadence orcad的建议 因此,我可以在电脑的cmd中使用pspice.exe按顺序运行cir或net(网络列表)文件 我用的是tcl/tk语言,我试过几次,都没有结果 我想做一些类似的东西: set top {C:\Users\file1.net C:\Users\file2.net}; foreach a $top {exec D:\\tools\\bin\\pspice.exe -r $a} 代码中有两个问题。 第一个问题是\f是列表中的转义字符序列(对

我想给我一些关于使用cadence orcad的建议 因此,我可以在电脑的cmd中使用pspice.exe按顺序运行cir或net(网络列表)文件

我用的是tcl/tk语言,我试过几次,都没有结果

我想做一些类似的东西:

set top  {C:\Users\file1.net C:\Users\file2.net}; 
foreach a $top 
{exec D:\\tools\\bin\\pspice.exe -r $a}

代码中有两个问题。 第一个问题是
\f
是列表中的转义字符序列(对于“向下一行”,IIRC;重点是您不需要这种解释)。第二个问题是,
foreach
中的括号放置错误

第一个问题最好通过使用
/
而不是
\
,然后对提供给操作系统的值使用
文件nativename
来解决。(对于
expr
中可执行文件的参数,您必须手动执行此操作;Tcl无法完全自动为您解决此问题。)第二个问题只是语法错误

试试这个:

set top {C:/Users/file1.net C:/Users/file2.net}
set pspice D:/tools/bin/pspice.exe
foreach a $top {
    # Tcl knows how to convert executable names for you; not the other args though
    exec $pspice -r [file nativename $a]
}

在Windows上,您还可以尝试:

package require twapi

set top {C:/Users/file1.net C:/Users/file2.net}

foreach a $top {
    twapi::shell_execute -path [file nativename $a]
}
只有当
*.net
文件已经与PSpice应用程序关联时,这才有效

上面的代码依赖于TWAPI扩展(如果您有)及其
shell\u execute
函数来打开文档,就像双击works一样

避免代码中出现反斜杠总是一个好主意(无需放置两次以避开它们),
file nativename
将为您完成这项工作


来源:

当前尝试有什么问题?你到底被困在哪里了?代码没有运行,为了更好地说明这一点,我想做一个过程:set-top{C:\Users\new.net};exec D:\\tools\\bin\\pspice.exe-r$top,用于一些文件。除非您确切知道自己在做什么,否则请在Tcl中使用“古埃及”大括号,或者真的喜欢与基本语言语法作斗争。我通过查看
lindex$top 0
返回的内容发现了您的第一个问题。首先感谢您的回答。其次,上面的代码只运行并模拟我们列表中的第一个文件,这就是我遇到的问题。例如,我想创建20个*.net文件来运行并从我的命令中模拟pspice.exe的下一个命令。@paiktis30在
exec
行的末尾放一个
&
,如下所示:
exec$pspice-r[file nativename$a]&
@Losko谢谢你的回复,这个更正很有效,但只适用于我列表中的第一个文件。