Последовательно запускать файлы cir и net с помощью tcl/tk

Я хотел бы дать мне ваш совет по использованию cadence orcad, чтобы я мог последовательно запускать файлы cir или net(netlist) с помощью pspice.exe в cmd моего компьютера.

Я использую язык tcl / tk. Я пробовал несколько вещей, но безрезультатно.

Я хочу сделать что-то похожее на это:

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

2 ответа

В 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_execute функция, чтобы открыть документ, как работает двойной щелчок.

Всегда рекомендуется избегать обратных косых черт в коде (не нужно ставить их дважды, чтобы избежать их), file nativename сделает всю работу за вас.

Источник: https://twapi.magicsplat.com/v4.5/shell.html#shell_execute

В вашем коде есть две проблемы. Первая проблема в том, что \fпредставляет собой последовательность управляющих символов в списках (для «перейти на одну строку вниз», IIRC; смысл в том, что вам не нужна такая интерпретация). Вторая проблема заключается в том, что вы неправильно разместили скобу в своем foreach.

Первую проблему лучше всего решить, используя / вместо \, а затем используя file 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]
}
Другие вопросы по тегам