我想使用tcl从一个文件夹中复制所有文件。 这是我到目前为止编写的代码,但它不起作用。有什么问题?
set files [glob -dir E:\Music *]
puts "Moving files"
foreach f { $files } {
file copy $f E:\
}
答案 0 :(得分:0)
我之前的假设是错误的,遗憾的是我没有注意到你在$files
周围使用大括号。与C语言不同,其中括号或大括号是句法结构的一部分,大括号用于在Tcl中引用。在这种情况下,$files
是glob
找到的文件列表,而{ $files }
是文字字符串“$ files”。由于没有名为“$ files”的文件,因此在尝试复制时会出错。
你仍然会遇到反斜杠字符的问题。在解释器准备评估命令的阶段,任何反斜杠字符都被读作“转义序列”的一部分。将反斜杠字符更改为常规斜杠(E:\
- > E:/
)可能会解决您的问题。您也可以像E:\\
或{E:/}
这样引用它。在后一种情况下,大括号必须包围整个字符串,因此它将是{E:\Music}
。
(注意:评论中提到的'Hoodiecrow'是我,我之前使用过那个昵称。)