我对此非常陌生,所以请保留最简单的答案。
我正在尝试使用批处理文件设置进程。此过程将调用正在查找某些文件的tcl,然后返回完成。它看起来像:
批次 - >致电tcl - >返回批次
在我的批处理文件中,我有:
设置MyPath = C:\the path that files are in\
然后我在调用$MyPath$\MyTcl.tcl
这在这里工作正常。但是在tcl中有一些进程正在寻找同一路径中的文件(MyPath),我不知道如何使用同一个变量(传递变量)。
任何帮助?
非常感谢提前。
答案 0 :(得分:1)
你必须让你的Tcl过程以某种方式了解这条路径。
这可以隐式或明确地完成。
隐式执行此操作的方法是更改工作目录
进入那个" C:\文件所在的路径" - 产生的Tcl解释器
进程将继承它作为所谓的"当前工作目录",
它可以在它运行的Tcl代码中查询
执行[pwd]
command
(或者仅使用相对路径引用文件,因为这样的路径
由OS根据当前工作目录解析
这个过程。
明确的方法很多;你可以:
"出口"批处理脚本中的变量并将其读回 在您的Tcl代码中 - 来自所谓的 "process environment block"
IIRC,Windows上的批处理脚本导出通过set
创建的所有变量
默认情况下,所以在你的Tcl脚本中你可以访问它
通过读取::env(MyPath)
变量来获取值。
Here是如何运作的。
将其作为命令行参数传递给您的脚本。
为了做到这一点,您的脚本必须实际修改 阅读它的命令行参数。
这是通过读取::argc
(命令行参数的数量)来完成的
和::argv
(这些参数的值)全局变量。
Here是如何运作的。
存在更多涉及将任何数据传递到子流程的方法 (例如通过临时文件或通过进程的标准输入流) 但是对于这么简单的案例来说它们太复杂了,所以我们不要探索 现在这个方向。