tcl/tk实例详解——返回一个文件夹下所有文件的绝对路径
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实例详解——返回一个文件夹下所有文件的绝对路径的更多相关文章
- tcl/tk实例详解——修改目录下所有文件(使用一个字符串代替另外一个)
#假设目录下全部都是普通文件,如果目录下还有子目录请#参考文章"读取文件夹下所有文件返回路径",#http://blog.csdn.net/dulixin/archive/2008 ...
- tcl/tk实例详解——glob使用例解
glob命令 这里以实例的形式解释一下glob命令的用法,很多时候纯粹的语法讲解根本讲不清楚,往往没有一个例子清晰,一下就glob命令进行一些分析,环境为Tclsh85,操作系统为windows XP ...
- Excel用Power Query把文件夹下所有文件合并为一个与合并多个表格
Excel用Power Query把文件夹下所有文件合并为一个与合并多个表格 在 Excel Power Query 未出来之前,把文件夹下所有文件合并为一个与合并同一工作表中的多个工作表,需要用 V ...
- C# 把一个文件夹下所有文件复制到另一个文件夹下 把一个文件夹下所有文件删除(转)
C# 把一个文件夹下所有文件复制到另一个文件夹下 public static void CopyDirectory(string srcPath, string destPath) { try { ...
- linux 压缩当前文件夹下所有文件
linux zip压缩.压缩当前文件夹下所有文件,压缩为a.zip.命令行的方法是怎样. zip -r fileName.zip 文件夹名 tar tar命令可以用来压缩打包单文件.多个文件.单个 ...
- FILE文件删除操作(删除指定文件夹下所有文件和文件夹包括子文件夹下所有文件和文件夹),就是删除所有
2018-11-05 19:42:08开始写 选择 删除 1.FileUtils.java类 import java.io.File;//导入包 import java.util.List;//导入 ...
- c bash 代码遍历文件夹下所有文件
用C代码.bash实现代码遍历文件夹下所有文件 递归方式实现如下: void listdir(char *path) { DIR *ptr_dir; struct dirent *dir_entry; ...
- 【转发】du命令 实现Linux 某个文件夹下的文件按大小排序
1. df -lh 2. du -s /usr/* | sort -rn这是按字节排序 3. du -sh /usr/* | sort -rn这是按兆(M)来排序 4.选出排在前面的10个du -s ...
- java读取文件夹下所有文件并替换文件每一行中指定的字符串
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.I ...
随机推荐
- 百万程序员的苦恼-选择VB.NET还是C#
在过去的一年中,互联网上的各大讨论区或者电子邮件的讨论列表都对微软的VB.NET以及C#的各种优越性做了探讨.这些讨论围绕的主要问题就是,我应该先学哪一个,VB.NET还是C#?? 我写这篇文章的目的 ...
- Win32下 Qt与Lua交互使用(二):在Lua脚本中使用Qt类
话接上篇.成功配置好Qt+Lua+toLua后,我们可以实现在Lua脚本中使用各个Qt的类.直接看代码吧. #include "include/lua.hpp" #include ...
- 【转】ubuntu 12.04英文版设置成中文版
原文网址:http://blog.csdn.net/hhbgk/article/details/7958776 适用于ubuntu 12.04英文版的系统,其它版本的设置应该是大同小异的. 进入ubu ...
- SQL Server查询性能优化——覆盖索引(二)
在SQL Server 查询性能优化——覆盖索引(一)中讲了覆盖索引的一些理论. 本文将具体讲一下使用不同索引对查询性能的影响. 下面通过实例,来查看不同的索引结构,如聚集索引.非聚集索引.组合索引等 ...
- C# 多线程是否结束可通过线程池可以判断
C# ManualResetEvent信号状态判断线程池是否结束 这是一段重要的代码,小猪两个小时的研究成果,记下来备查. using System; using System.Collection ...
- vim+gdb+ddd+xxgdb精彩的程序调试
//-------------------------------------------------------------------------------------------------- ...
- JDK1.5新特性(四)……Autoboxing/Unboxing
援引 Autoboxing/Unboxing - This facility eliminates the drudgery of manual conversion between primitiv ...
- HDU 1907
博弈入门题吧. 把尼姆博弈推广到n堆,都是用异或运算.还有个总结的地方是,只要先手面对的是奇异局势,则胜负都掌握在后手.本题,题目要求是最后拿完的输,尼姆博弈是最后拿完的赢.但实际上优先权都掌握在后手 ...
- Bzoj 1565: [NOI2009]植物大战僵尸 最大权闭合图,拓扑排序
题目: http://cojs.tk/cogs/problem/problem.php?pid=410 410. [NOI2009] 植物大战僵尸 ★★★ 输入文件:pvz.in 输出文件:p ...
- nyoj 27 水池数目
水池数目 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 南阳理工学院校园里有一些小河和一些湖泊,现在,我们把它们通一看成水池,假设有一张我们学校的某处的地图,这个地 ...