Iterate Files by Tcltk

eryar@163.com

Abstract. Tcl/Tk provide a programming system for developing and using graphical user interface(GUI) applications. Tcl stands for “tool command language” and is pronounced “tickle”, is a simple scripting language for controlling the extending applications. The blog use Tcl/Tk to iterate all the files for a given directory, this is useful to some automation work, such as change all the file names for a given directory; add copyright info for the source code files.

Key Words. Tcl/Tk, Iterate Files,遍历文件夹中所有文件

1. Introduction

Tcl/Tk是一种用于易于使用的脚本语言,可以用来对程序进行扩展及完成一些自动化的工作,加上内置的一些命令,其功能要比Windows中的DOS的批处理命令功能更强大,使用更方便。Tcl脚本语言是开源免费的,可以方便获取且免费使用。

OpenCASCADE 中使用了Tcl/Tk来实现了一个自动化测试体系。使用在OpenCASCADE中使用自定义的Tcl命令,可以快速来检验算法的结果。通过编写脚本文 件,实现了测试的自动化。所以学习一下Tcl/Tk脚本语言,并在实际的工作中加以应用,可以将一些机械的劳动交给计算机自动完成。

本文主要说明如何使用Tcl/Tk来遍历指定文件夹中所有文件。利用此功能,可以稍微加以扩展,就可以完成一些实际的重复劳动。如遍历指定目录中所有的源文件或指定类型的文件,添加上版权信息等。

2. Tcl/Tk Code

要遍历指定目录下所有的文件,包括子文件夹,需要用到命令glob及一个递归函数。脚本代码如下所示:

#
# Tcl/Tk script to iterate all the files for a given directory.
# eryar@163.com
# 2015-01-18
# package require Tcl
package require Tk wm title . "Iterate Files" label .labelDirectory -text "Directory "
entry .entryDirectory -width -relief sunken -textvariable aDirectory
button .buttonDirectory -text "..." -command {chooseDirectory .entryDirectory} button .buttonApply -text "Apply" -command {perform $aDirectory}
button .buttonCancel -text "Cancel" -command {exit} grid .labelDirectory .entryDirectory .buttonDirectory
grid .buttonApply .buttonCancel # chooseDirectory--
# choose the directory to iterate.
#
proc chooseDirectory {theEntry} {
set dir [tk_chooseDirectory -initialdir [pwd] -mustexist ] if {[string compare $dir ""]} {
$theEntry delete end
$theEntry insert $dir
$theEntry xview end
}
} # perform--
# perform the algorithm.
#
proc perform {theDirectory} {
puts "Iterate all the files in $theDirectory" if {[string length $theDirectory] < } {
tk_messageBox -type ok -icon warning -message "Please select the directory!" -parent .
return
} # process the iterate...
process $theDirectory
} # process--
# recursion every folder and file.
#
proc process {theFolder} { set aFiles [glob -nocomplain -directory $theFolder *] foreach aFile $aFiles {
if {[file isfile $aFile]} {
# just output the file name here.
# you can do something such as rename for the file.
puts "$aFile \n"
} else {
process $aFile
}
}
}

程序用法为打开Tcl解释器,使用命令source加载脚本文件,如下图所示:

Figure 2.1 Tcl usage

3. Conclusion

通过应用Tcl/Tk来体验脚本编程的乐趣,并加深对Tcl/Tk的理解。从而对OpenCASCADE的模块Draw Test Harness更好地理解。

如果有编程基础,Tcl/Tk会很快入门的。入门后,可以应用其直接编写一些有意思有脚本,来实现一些重复工作的自动化。也可将Tcl加入到自己的程序中,增加程序的二次开发功能。

可见,玩一玩脚本语言,还是非常有趣的!

PDF Version and Script: Iterate Files by Tcl

最新文章

  1. 【生活没有希望】NOIP2010初赛 烽火传递 smartoj1475
  2. SQL Server差异备份的备份/还原原理
  3. C#向Sql数据库插入控制
  4. HFSS学习(一)计划
  5. 《TCP/IP详解 卷一》读书笔记-----TCP persist &amp;Keeplive timer
  6. C#代码创建3D模型
  7. css spprite应用
  8. 菜单练习-关机&amp;取消
  9. 8-14-Exercise
  10. Hadoop 2.2.0 HA构造
  11. UTF-8笔记170330
  12. 【无语凝噎(wordless)】
  13. C#面向对象之多态。
  14. Spring Boot + Spring Cloud 实现权限管理系统 后端篇(十五):系统服务监控
  15. JS时间戳和时间之间转换
  16. 用VS2010编译python2.7的源码
  17. 9.22 下午 (document对象)
  18. Palindrome Number - LeetCode
  19. C#和C++中char类型的区别
  20. c# comboBox与数据库中的数据绑定

热门文章

  1. ViewPager取消左右滑动切换功能
  2. CSS中各种各样居中方法的总结
  3. 德国W家HIPP 奶粉有货播报:2014.7.8 HIPP 奶粉 1+ 4盒装有货啦!
  4. 【Linux】crontab 定时任务
  5. OC--init,initialize,initWithCoder:,initWithFrame:各方法的区别和加载顺序
  6. 李洪强iOS经典面试题153- 补充
  7. CF2.C
  8. markdown预览-快速入门
  9. Oracle like查询
  10. 学习笔记:因为java匿名类学习到接口的一些小用法