【问题标题】:Clearcase find command in combination with Tcl Script and Batch-File: Redirection doesn't workClearcase 查找命令结合 Tcl 脚本和批处理文件:重定向不起作用
【发布时间】:2011-08-01 13:59:49
【问题描述】:

又是我 ;-)

我尝试从批处理文件中启动 cleartool find 命令。该批处理文件从 Tcl 脚本中获取他的参数。

批处理文件:

 SET VERARG="version(\main\LATEST) && !lbtype(%3)"
 cleartool find . -version %VERARG% -print > Y:\x\Logs\%3.log

Tcl 脚本:

 set v_cmd "y:\\x\\clearcase_find_change.cmd $v_drive $v_path $v_label \n"
 set v_outp [exec cmd << $v_cmd]

当我从命令行启动批处理文件时,它工作并将命中写入日志文件,但是当我从 Tcl 启动它时,我在命令窗口中看到命中,但它只创建日志-没有内容的文件。我已经用一个非常简单的批处理文件对其进行了测试,该文件只包含一个回显命令和一个重定向。那行得通,我也尝试使用不同的驱动器,但没有成功。我还检查了批处理文件收到的参数,但对我来说一切都很好。

简单的调用,成功了:

Batch: echo %1 > Y:\x\%2.log
Tcl: set v_cmd "y:\\x\\simple_echo.cmd $v_lib $v_label \n"

【问题讨论】:

    标签: batch-file find redirect tcl clearcase


    【解决方案1】:

    也许它缺少一个 cmd 指令来指定 DOS 会话应该执行然后退出

    set v_outp [exec cmd << $v_cmd /c]
    

    或:

    set v_outp [exec cmd /c << $v_cmd]
    

    或:

    set v_cmd "/c y:\\x\\clearcase_find_change.cmd $v_drive $v_path $v_label \n"
    set v_outp [exec cmd << $v_cmd]
    

    (确保首先传递/c

    Tcl/Tk FAQ:

    exec cmd.exe >&@stdout <@stdin /c dir      
    

    将为当前目录执行目录命令。
    查看cmd.exe 下可用开关的 Windows 帮助。
    /c”告诉它执行命令然后退出。 “/k”告诉它执行命令并保持 DOS 命令解释器处于活动状态。
    (注意 cmd.exe 是 Windows NT 上 MS-DOS 解释器的名称。)

    【讨论】:

    • 可能性 1 和 2 甚至不会打开命令窗口,可能性 3 会产生 Tcl 错误
    • @Kai:好的。基本上,您需要使用/c 选项(首先在一个简单的、非ClearCase 相关的、用于简单命令的Tcl 脚本中),看看它是否有效。然后适应 ClearCase (cleartool) cmd 命令。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    • 2013-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多