【问题标题】:How to run a batch file from a tcl-file inside Quartus?如何从 Quartus 中的 tcl 文件运行批处理文件?
【发布时间】:2020-09-03 06:50:19
【问题描述】:

我想从 Quartus 运行一个 tcl-File,它运行一个批处理文件,而批处理文件读取用户输入。

第一个问题是我根本看不到可以看到用户输入的命令行。

tcl 文件像这样运行 .bat 文件:

exec cmd \/c D:/test/run.bat

我该怎么做?

【问题讨论】:

    标签: batch-file tcl quartus


    【解决方案1】:

    我假设您不是从非控制台模式应用程序运行它。如果你是,一个控制台会自动弹出。关于这个以及如何防止它有很多问题,但你似乎有相反的问题。

    默认情况下,Tcl 运行子进程,以便它们连接回 Tcl 进程,以便允许它提供输入流并读取输出流和错误流。这是最常见的情况。但是,在您的情况下,您希望将这些定向到当前输入/输出流,以便用户可以看到它们。这并不太难,但需要更多代码:

    # You need to use [file nativename] with cmd
    # The double quotes are for highlighting purposes here on Stack Overflow only
    exec cmd /c [file nativename "D:/test/run.bat"] <@stdin >@stdout 2>@stderr
    

    关键位(如果我的诊断正确的话)是连接通道的&lt;@stdin &gt;@stdout 2&gt;@stderr

    也有可能是file nativename 实际上在做重要的事情。在 Windows 上传递给非 Tcl 进程的文件名通常需要以本机形式呈现(主要是用\ 而不是/)。而且你不需要把\放在/前面。

    【讨论】:

    • 通过您的示例获取此错误消息:错误 (245021): 无法运行 Tcl 脚本 D:/test/run.tcl。错误:通道“stdin”没有打开读取。
    • 啊,这表明执行环境中的事情已经崩溃了。最好的建议是更改该批处理脚本,使其永远不会以交互方式从用户那里读取数据,因为当您在该位置运行它时,这不太可能起作用。
    • 感谢您的回答。我将更改批处理文件以便没有用户输入
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    • 2012-12-18
    • 2011-10-29
    • 2012-08-07
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多