使用glob在TCL中复制多个文件

时间:2015-02-14 11:24:09

标签: copy tcl glob

我想使用tcl从一个文件夹中复制所有文件。 这是我到目前为止编写的代码,但它不起作用。有什么问题?

set files [glob -dir E:\Music *]
puts "Moving files"

foreach f { $files } {
    file copy $f E:\
}

1 个答案:

答案 0 :(得分:0)

我之前的假设是错误的,遗憾的是我没有注意到你在$files周围使用大括号。与C语言不同,其中括号或大括号是句法结构的一部分,大括号用于在Tcl中引用。在这种情况下,$filesglob找到的文件列表,而{ $files }是文字字符串“$ files”。由于没有名为“$ files”的文件,因此在尝试复制时会出错。

你仍然会遇到反斜杠字符的问题。在解释器准备评估命令的阶段,任何反斜杠字符都被读作“转义序列”的一部分。将反斜杠字符更改为常规斜杠(E:\ - > E:/)可能会解决您的问题。您也可以像E:\\{E:/}这样引用它。在后一种情况下,大括号必须包围整个字符串,因此它将是{E:\Music}

(注意:评论中提到的'Hoodiecrow'是我,我之前使用过那个昵称。)