http://blog.csdn.net/dulixin/article/details/2133840

#所有代码如下,使用注释的方式讲解脚本
#修改好文件夹和保存结果路径,可以把本文件直接拷贝进tcl解释器运行

#脚本目的:返回一个文件夹下所有的文件的绝对路径
#主要讲述和操作的命令cd、pwd、glob
#次要命令:file、open、catch

#脚本思想:使用递归返回所有的文件路径,可以遍历到所有的子文件夹

#脚本以在window目录下为例,需要在其它系统下请修改路径名
#需要返回文件路径的文件夹,需要注意在windows下路径名用/间隔,tcl语言中用/间隔
set dirpath "D:/Script.NET/V2"

#进入文件夹中
cd $dirpath
pwd

#结果保存在文件中,此处以windows系统下为例
set resultfile "C:/result.txt"

#打开保存结果的文件
#catch用于捕捉发生的错误,使脚本不会应为错误而中断,脚本中捕捉到错误会使用exit退出
#result变量存储打开的结果文件I/O通道ID
if { [catch {set result [open $resultfile w+]} err] } {
   puts $err
   exit
}

#用于返回文件路径名的过程
#myDir需要返回文件路径的文件夹名
#result为保存结果的文件I/O通道ID
proc FindFile { myDir result } {
   #进入目录
   if {[catch {cd $myDir} err]} {
      puts $result $err
      return
   }
   
   #遍历目录中所有文件和文件夹
   #如果是文件夹则递归调用FindFile过程
   #如果是文件直接把路径记录到结果文件中
   foreach myfile [glob -nocomplain *] {
       #进入递归后有可能修改当前的目录,
       #因为file命令只能对当前路径有效果,
       #所以需要保证在正确的目录下操作文件
       cd $myDir
    
       #如果文件夹是空的,则会返回空,不记录文件夹
      if {[string equal $myfile ""]} {
        return
      } 
   
   
      set fullfile [file join $myDir $myfile]
   
      #判断是文件夹还是文件
      #如果是文件夹则递归调用FindFile过程
      #如果是文件直接把路径记录到结果文件中
      if {[file isdirectory $myfile]} {
        puts $result $fullfile
        FindFile $fullfile $result
      } else {
        puts $result $fullfile
      }
   }
}

#执行脚本命令,返回结果
FindFile $dirpath $result

#关闭保存结果的文件I/O通道
close $result

tcl/tk实例详解——返回一个文件夹下所有文件的绝对路径的更多相关文章

  1. tcl/tk实例详解——修改目录下所有文件(使用一个字符串代替另外一个)

    #假设目录下全部都是普通文件,如果目录下还有子目录请#参考文章"读取文件夹下所有文件返回路径",#http://blog.csdn.net/dulixin/archive/2008 ...

  2. tcl/tk实例详解——glob使用例解

    glob命令 这里以实例的形式解释一下glob命令的用法,很多时候纯粹的语法讲解根本讲不清楚,往往没有一个例子清晰,一下就glob命令进行一些分析,环境为Tclsh85,操作系统为windows XP ...

  3. Excel用Power Query把文件夹下所有文件合并为一个与合并多个表格

    Excel用Power Query把文件夹下所有文件合并为一个与合并多个表格 在 Excel Power Query 未出来之前,把文件夹下所有文件合并为一个与合并同一工作表中的多个工作表,需要用 V ...

  4. C# 把一个文件夹下所有文件复制到另一个文件夹下 把一个文件夹下所有文件删除(转)

    C# 把一个文件夹下所有文件复制到另一个文件夹下   public static void CopyDirectory(string srcPath, string destPath) { try { ...

  5. linux 压缩当前文件夹下所有文件

    linux zip压缩.压缩当前文件夹下所有文件,压缩为a.zip.命令行的方法是怎样. zip  -r fileName.zip  文件夹名 tar tar命令可以用来压缩打包单文件.多个文件.单个 ...

  6. FILE文件删除操作(删除指定文件夹下所有文件和文件夹包括子文件夹下所有文件和文件夹),就是删除所有

    2018-11-05  19:42:08开始写 选择 删除 1.FileUtils.java类 import java.io.File;//导入包 import java.util.List;//导入 ...

  7. c bash 代码遍历文件夹下所有文件

    用C代码.bash实现代码遍历文件夹下所有文件 递归方式实现如下: void listdir(char *path) { DIR *ptr_dir; struct dirent *dir_entry; ...

  8. 【转发】du命令 实现Linux 某个文件夹下的文件按大小排序

    1. df -lh 2. du -s /usr/* | sort -rn这是按字节排序 3. du -sh /usr/* | sort -rn这是按兆(M)来排序 4.选出排在前面的10个du -s ...

  9. java读取文件夹下所有文件并替换文件每一行中指定的字符串

    import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.I ...

随机推荐

  1. bzoj3165 1568

    1568是3165的弱化版,发的代码是3165的这道题完全没想出来,是看wyl大神的题解http://hi.baidu.com/wyl8899/item/2deafd3a376ef2d46d15e99 ...

  2. spring的事件机制

    事件机制作为一种编程机制,在许多语言中都提供了支持.JAVA语言也不例外,java中的事件机制的参与者有3种角色: 1.event object 2.event source 3.event list ...

  3. NSString 转换 float 的精度问题, 换double类型可以解决

    @"0.01" 转换成float时, 经常会变成  0.009999799 这种形式, 因为float类型无法精准保存, 系统会选一个接近的值来代替. 而double类型则可以有更 ...

  4. 【转】使用XCODE 的SOURCE CONTROL 做版本控制 (1)

    原文网址:http://it.zhaozhao.info/archives/60469 有一次笔者在开心项目准备尝试新的练习的时候,赫然注意到在选择档案存放位置的时候,下面有个Source Contr ...

  5. win7无法识别U盘,驱动信息:该设备的驱动程序未被安装。 (代码 28)

    台式机的win7 64位系统可以识别u盘,但笔记本的win7 64位却识别不了,说明U盘是可以用的.查看笔记本的设备管理器,发现驱动安装失败,提示信息为“该设备的驱动程序未被安装. (代码 28) ” ...

  6. Windows中APACHE开启fastcgi后无法连接数据库

    环境:Windows server 2003 x64Apache 2.2.14mod_fcgid-2.2b-w32.zipPHP VC9 x86 Non Thread Safe(用Visual C++ ...

  7. Datatable转换成List实体对象列表 几个实例

    一, /// <summary> /// 将Datatable转换为List集合 /// </summary> /// <typeparam name="T&q ...

  8. 怎样从官网下载Spring的jar包

    第一种,简单粗暴直接http://repo.springsource.org/libs-release-local/org/springframework/spring/3.2.4.RELEASE/s ...

  9. 2015年10月16日HTML标签表单笔记

    textarea只是纯文本编辑框,要想输入各种样式的文本.图片.表格等需要使用“富文本编辑框”.html4暂无富文本编辑框,可使用第三方工具实现此效果. <textarea></te ...

  10. codeforces629C Famil Door and Brackets (dp)

    题意:给你一个长度为n的括号匹配串(不一定恰好匹配),让你在这个串的前面加p串和后面加上q串,使得这个括号串平衡(平衡的含义是对于任意位置的括号前缀和大于等于0,且最后的前缀和为0). 思路:枚举这个 ...