从批处理运行tcl作为变量传递路径

时间:2017-11-23 07:59:48

标签: batch-file variables tcl

我对此非常陌生,所以请保留最简单的答案。

我正在尝试使用批处理文件设置进程。此过程将调用正在查找某些文件的tcl,然后返回完成。它看起来像:

  

批次 - >致电tcl - >返回批次

在我的批处理文件中,我有:

设置MyPath = C:\the path that files are in\
然后我在调用$MyPath$\MyTcl.tcl

中的tcl

这在这里工作正常。但是在tcl中有一些进程正在寻找同一路径中的文件(MyPath),我不知道如何使用同一个变量(传递变量)。

任何帮助?

非常感谢提前。

1 个答案:

答案 0 :(得分:1)

你必须让你的Tcl过程以某种方式了解这条路径。

这可以隐式或明确地完成。

隐式执行此操作的方法是更改​​工作目录 进入那个" C:\文件所在的路径" - 产生的Tcl解释器 进程将继承它作为所谓的"当前工作目录", 它可以在它运行的Tcl代码中查询 执行[pwd] command (或者仅使用相对路径引用文件,因为这样的路径 由OS根据当前工作目录解析 这个过程。

明确的方法很多;你可以:

  • "出口"批处理脚本中的变量并将其读回 在您的Tcl代码中 - 来自所谓的 "process environment block"

    IIRC,Windows上的批处理脚本导出通过set创建的所有变量 默认情况下,所以在你的Tcl脚本中你可以访问它 通过读取::env(MyPath)变量来获取值。 Here是如何运作的。

  • 将其作为命令行参数传递给您的脚本。

    为了做到这一点,您的脚本必须实际修改 阅读它的命令行参数。

    这是通过读取::argc(命令行参数的数量)来完成的 和::argv(这些参数的值)全局变量。 Here是如何运作的。

  • 存在更多涉及将任何数据传递到子流程的方法 (例如通过临时文件或通过进程的标准输入流) 但是对于这么简单的案例来说它们太复杂了,所以我们不要探索 现在这个方向。