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. cgi ISAP sapi等

    1.CGI和FastCGI是apache处理php脚本的其中两种工作模式,还有ISAPI,SAPI等 2.而php-fpm并不是一种工作模式,而是一个PHP在FastCGI模式运行下的进程管理器,全称 ...

  2. 不是 EPUB ,而是 ePub

    ePub 是 Electronic Publication 的缩写,意为电子出版,是一个自由的开放标准,属于一种可以“自动重新编排”的内容,也就是文字内容可以根据阅读设备的特性,以最适于阅读的方式显示 ...

  3. MailSystem.NET Gmail IMAP讀取信件

    程式的主流程為: 開啟SSL連線,逐一讀取收信匣中的信件,將信件內文HTML及附檔逐一存檔後,再將信件移至垃圾桶. 程式碼如下,補充說明我寫在註解裡,請參考: static void Main(str ...

  4. Curl之Post Json

    curl Post Json $ curl -i -X POST -H "'Content-type':'application/x-www-form-urlencoded', 'chars ...

  5. 如何将SQL Server运行到Windows Azure上

    从2012年6月6日开始,Windows Azure上一些强大的新功能现在可用于预览,包括新的Windows Azure虚拟机(VM).其中有关Windows Azure虚拟机最强大的一件事是他们利用 ...

  6. 【Java基础】继承的一些总结

    什么是继承 把一些类的具有共性的东西剥离出来形成一个新的类,然后各个其他类保留自己独有的特性,并用关键字extends继承这个剥离出来的新的类,可以最终达到各类原始相同效果,但是在每个类中,单用一个“ ...

  7. [Windows Server] 在 Windows Server 2012 上安裝 .NET Framework 3.5 - 摘自网络

    官方: Applies To: Windows 8, Windows 8.1 For a Windows Server® 2012 core installation that is not conn ...

  8. The iOS Design Cheat Sheet 界面设计速参

    http://ivomynttinen.com/blog/the-ios-7-design-cheat-sheet/ With the release of iOS 7, app designers ...

  9. mac os的android开发国内库下载地址

    http://ubuntu.buct.edu.cn/android/repository/

  10. JavaScript- The Good Parts function Curry

    Functions are values, and we can manipulate function values in interesting ways.Currying allows us t ...