在tcl中复制文件

时间:2012-12-18 18:38:09

标签: tcl file-copying

我在“file copy”tcl命令中有一个查询。我尝试将所有文​​件存储到列表中并在我的命令中使用它。但是tcl没有识别那些文件。

例如:

    Files are abc.log , foo.log , bar.log

如果这些文件附加到列表中,请说list_file,如果我在命令中替换list_file

    lappend list_file abc.log foo.log bar.log
    file mkdir ../../abc
    file copy -- $list_file ../../abc

我收到错误消息“错误复制,没有文件或目录”。如果我通过直接指定文件名(而不是列表)来尝试相同的操作。请指导我这个

2 个答案:

答案 0 :(得分:2)

详细说明@ evil-otto的答案......

{*}仅在Tcl 8.5之后可用;对于早期版本,可以使用eval或多次调用。

使用eval构建命令:

set cmd [list file copy --]
lappend cmd abc.log foo.log bar.log ../../abc
eval $cmd

(阅读this以了解在创建eval uated命令时必须使用列表的原因。)

多次调用(不费脑子):

foreach fname $list_file {
    file copy -- $fname ../../abc
}

答案 1 :(得分:1)

必须扩展传递给file copy的列表。

file copy -- {*}$list_file ../../abc