TCL 列表 foreach
TCL list foreach
我有以下代码:我想在 foreach 循环中添加也可以输出文件名。
set outfile [open "out.tcl" w]
set allfiles "[glob /a/b/c/*.txt]"
foreach files $allfiles {
puts $outfile "{$files}"
}
close $outfile
带有上述代码的当前 OUTFILE
/a/b/c/123_abc.txt
/a/b/c/2_34cbd.txt
/a/b/c/45_6def.txt
/a/b/c/ABC_2CD.txt
/a/b/c/2BC_AB2.txt
********
我想要什么作为我的最终 OUTFILE
/a/b/c/123_abc.txt
123_abc
/a/b/c/2_34cbd.txt
2_34cbd
/a/b/c/45_6def.txt
45_6def
/a/b/c/ABC_2CD.txt
ABC_2CD
/a/b/c/2BC_AB2.txt
2BC_AB2
通过组合 file tail
(which removes the leading path) and file rootname
(删除扩展名):
,您可以获得没有前导路径或文件扩展名的文件名
% set files /a/b/c/123_abc.txt
/a/b/c/123_abc.txt
% file tail $files
123_abc.txt
% file rootname $files
/a/b/c/123_abc
% file rootname [file tail $files]
123_abc
所以...
set allfiles [glob /a/b/c/*.txt] ;# No quotes needed
foreach files $allfiles {
puts $outfile $files
puts $outfile [file rootname [file tail $files]]
}
我有以下代码:我想在 foreach 循环中添加也可以输出文件名。
set outfile [open "out.tcl" w]
set allfiles "[glob /a/b/c/*.txt]"
foreach files $allfiles {
puts $outfile "{$files}"
}
close $outfile
带有上述代码的当前 OUTFILE
/a/b/c/123_abc.txt
/a/b/c/2_34cbd.txt
/a/b/c/45_6def.txt
/a/b/c/ABC_2CD.txt
/a/b/c/2BC_AB2.txt
********
我想要什么作为我的最终 OUTFILE
/a/b/c/123_abc.txt
123_abc
/a/b/c/2_34cbd.txt
2_34cbd
/a/b/c/45_6def.txt
45_6def
/a/b/c/ABC_2CD.txt
ABC_2CD
/a/b/c/2BC_AB2.txt
2BC_AB2
通过组合 file tail
(which removes the leading path) and file rootname
(删除扩展名):
% set files /a/b/c/123_abc.txt
/a/b/c/123_abc.txt
% file tail $files
123_abc.txt
% file rootname $files
/a/b/c/123_abc
% file rootname [file tail $files]
123_abc
所以...
set allfiles [glob /a/b/c/*.txt] ;# No quotes needed
foreach files $allfiles {
puts $outfile $files
puts $outfile [file rootname [file tail $files]]
}