我在tcl中创建了一个打包器,用户可以从中选择要压缩到包中的文件。
问题是,我无法压缩多个文件,当选择多个文件时,$ file变量中的路径如下所示:" /home/file.txt /home/file2.txt"所以它不能被压缩,因为路径不喜欢。
有没有办法使用tk_getOpenFile函数压缩多个文件?
set types {
{{Text Files} {.txt} }
}
#Here i'm defining that only .txt files can be selected
set file [tk_getOpenFile -multiple 1 -filetypes $types -parent .]
#the file chooser function in tcl, where it can be chosen multiple files at once, the path of the files go into the $file variable
exec zip -j package.zip $file
# A shell script function for zipping the files
答案 0 :(得分:2)
exec zip -j package.zip {*}$file
如果您使用的是Tcl 8.5或更高版本。
{*}
前缀重写调用,以便如果后面的表达式是列表,则该列表中的每个元素都将成为调用中的单词。如果$foo
的值为{a b c}
并且您调用bar abc {*}$foo def
,则实际调用将变为bar abc a b c def
。
只要您保持-multiple
选项,就不会有包含空格的文件名。
文档:{*}