Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
217 views
in Technique[技术] by (71.8m points)

copy - Copying Multiple Files in TCL using glob

I want to copy all files from one folder using tcl. This is the code that I have written so far, but it does not work. What is the problem?

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

foreach f { $files } {
    file copy $f E:
}
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

My earlier assumption was wrong, and I unfortunately didn't notice that you were using braces around $files. Unlike languages like C, where parentheses or braces are part of syntactic constructions, braces are used for quoting in Tcl. In this case, $files is the list of files found by glob, while { $files } is the literal string " $files ". Since there is no file named " $files ", you get an error when you try to copy it.

You are still going to have problems with the backslash character. During the phase when the interpreter prepares a command for evaluation, any backslash character is read as a part of an "escape sequence". Changing the backslash character to a regular slash (E: -> E:/) may solve your problem. You can also quote it like this E:\ or like this {E:/}. In the latter case, the braces must enclose the whole string, so it would be {E:Music}.

(Note: the 'Hoodiecrow' mentioned in the comments is me, I used that nick earlier.)


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...