2012-12-18 95 views
2

我在「文件複製」tcl命令中有一個查詢。我嘗試將所有文​​件存儲到列表中,並將其用於我的命令中。但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

爲了詳細說明@邪惡奧托的回答......

{*}僅僅是因爲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 
} 
+0

謝謝!如何複製目錄?它說「不能覆蓋文件」 –

1

必須擴展傳遞給file copy的列表。

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