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

问题描述 投票:0回答:2

我对此很陌生,所以请以最简单的形式回答。

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

批处理 --> 调用 tcl --> 返回批处理

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

设置我的路径=

C:\the path that files are in\

然后我打电话给
$MyPath$\MyTcl.tcl

中的 tcl

到这里为止一切正常。但是在 tcl 中有一些进程正在寻找相同路径 (MyPath) 中的文件,我不确定如何使用相同的变量(传递变量)。

有什么帮助吗?

非常感谢。

batch-file variables tcl
2个回答
1
投票

你必须让你的 Tcl 进程以某种方式知道那条路径。

这可以隐式或显式完成。

隐式执行此操作的方法是更改工作目录 进入那个“C:文件所在的路径”——生成的 Tcl 解释器 进程将继承它作为所谓的“当前工作目录”, 它可以在它运行的 Tcl 代码中查询 执行

[pwd]
命令 (或者只是使用相对路径引用文件,因为这样的路径 由操作系统解析为根目录在当前工作目录中 的过程。

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

  • “导出”批处理脚本中的变量并读回 在你的 Tcl 代码中——来自所谓的 “进程环境块”.

    IIRC,Windows 上的批处理脚本导出通过

    set
    创建的所有变量 默认情况下,所以在你的 Tcl 脚本中你可以访问它 通过读取
    ::env(MyPath)
    变量的值。 这里是如何工作的。

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

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

    这是通过阅读

    ::argc
    (命令行参数的数量)来完成的 和
    ::argv
    (这些参数的值)全局变量。 这里是如何工作的。

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


© www.soinside.com 2019 - 2024. All rights reserved.