如何通过tcl脚本压缩多个文件?

时间:2016-01-13 18:16:07

标签: tcl

我正在尝试使用Tcl从目录中压缩文件,但我只能压缩一个文件,但其余三个文件(a_2.txt,a_3.txt,a_4.txt)无法压缩。我想要随时压缩所有文件。 另一方面,我从命令提示符做同样的事情,我能够成功执行。

    directory 
    a_1.txt 
    a_2.txt 
    a_3.txt 
    a_4.txt


    #!/usr/local/bin/tclsh

    set dir /usr/test/abc/            
    array set g_config { ZIP /usr/bin/zip }

    proc zippingfile { files } {
    set out_files abc.10X
    set outdir /usr/test/out/ 

    exec $g_config(ZIP) $outdir$out_files $files

        }

    set filenames [exec ls $dir]
    cd $dir

    foreach line $filenames {
    append files "$line "
# the value of files should be a_1.txt a_2.txt a_3.txt a_4.txt
        }       

    zippingfile $files

1 个答案:

答案 0 :(得分:0)

array set g_config { ZIP /usr/bin/zip }

proc zippingfile { files } {
    global g_config
    set out_files abc.10X
    set outdir /usr/test/out
    exec $g_config(ZIP) [file join $outdir $out_files] {*}$files
}

set dir /usr/test/abc/            
cd $dir
set files [glob *]
zippingfile $files

注意:

  • 处理缩进
  • 您需要global命令才能从proc
  • 访问全局变量
  • 请注意字符串和列表之间的区别
    • 您需要将单个文件参数传递给zip,而不是单个列表或单个字符串。
  • don't parse ls,使用Tcl内置glob