【发布时间】:2020-09-03 06:50:19
【问题描述】:
我想从 Quartus 运行一个 tcl-File,它运行一个批处理文件,而批处理文件读取用户输入。
第一个问题是我根本看不到可以看到用户输入的命令行。
tcl 文件像这样运行 .bat 文件:
exec cmd \/c D:/test/run.bat
我该怎么做?
【问题讨论】:
标签: batch-file tcl quartus
我想从 Quartus 运行一个 tcl-File,它运行一个批处理文件,而批处理文件读取用户输入。
第一个问题是我根本看不到可以看到用户输入的命令行。
tcl 文件像这样运行 .bat 文件:
exec cmd \/c D:/test/run.bat
我该怎么做?
【问题讨论】:
标签: batch-file tcl quartus
我假设您不是从非控制台模式应用程序运行它。如果你是,一个控制台会自动弹出。关于这个以及如何防止它有很多问题,但你似乎有相反的问题。
默认情况下,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
关键位(如果我的诊断正确的话)是连接通道的<@stdin >@stdout 2>@stderr。
也有可能是file nativename 实际上在做重要的事情。在 Windows 上传递给非 Tcl 进程的文件名通常需要以本机形式呈现(主要是用\ 而不是/)。而且你不需要把\放在/前面。
【讨论】: