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

时间: 2024-10-14 18:12:23

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

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

#假设目录下全部都是普通文件,如果目录下还有子目录请#参考文章"读取文件夹下所有文件返回路径",#http://blog.csdn.net/dulixin/archive/2008/02/29/2133840.aspx##此脚本的方法主要应用于处理大批量中小文件##主要使用命令:open.string map.read###mydir:需要修改的文件所在目录#str1:被替换的字符串#str2:替换的字符串 set mydir "C:/test"set str1 &

给一个文件夹,返回该文件夹下所有文件的数量

<?php 给一个文件夹,读取文件夹里面文件的数量 echo ShuLiang("./gai.php"); 给一个文件夹,返回该文件夹下所有文件的数量 function ShuLiang($filename) { $sum=0; 定一个初始值 变量 $dir = opendir($filename); while($f = readdir($dir)) { if($f=="." || $f=="..") 排除 两个文件 { } else {

PHP,获取文件夹下所有文件数量的方法。

<?php //给我一个文件夹,返回该文件夹下所有的文件数量 function ShuLiang($url)//造一个方法,给一个参数 { $sl=0;//造一个变量,让他默认值为0; $arr = glob($url);//把该路径下所有的文件存到一个数组里面; foreach ($arr as $v)//循环便利一下,吧数组$arr赋给$v; { if(is_file($v))//先用个if判断一下这个文件夹下的文件是不是文件,有可能是文件夹; { $sl++;//如果是文件,数量加一; }

VBA读取文件夹下所有文件夹及文件内容,并以树形结构展示

Const TR_LEVEL_MARK = "+"Const TR_COL_INDEX = "A"Const TR_COL_LEVEL = "E"Const TR_COL_NAME = "C"Const TR_COL_COUNT = "D"Const TR_COL_TREE_START = "F"Const TR_ROW_HEIGHT = 23Const TR_COL_LINE_WIDT

Python读取指定文件夹下的文件

1 # -*- coding: utf-8 -*- 2 import csv 3 import os 4 import pandas as pd 5 #提取文件夹下的地址+文件名,源文件设定排序规则 6 def file_name(file_dir): 7 L = [] 8 for root, dirs, files in os.walk(file_dir): 9 for file in files: 10 if os.path.splitext(file)[1] == '.csv': 11 L

Java遍历文件夹下所有文件并替换指定字符串

应用场景:比如有一个深层次的文件目录结构,如:javaAPI 每个文件里面都有相同的内容,而我们要统一修改为其他内容.上千个文件如果一个个修改显得太不明智. import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.io.PrintWriter; public class Test { /** *

利用shell脚本或者php移动某个文件夹下的文件到各自的日期组成的目录下

背景是这样的:网站一开始访问量比较小,大家就把所有的图片文件上传到一个目录下(比如是/data/images/).后来访问量大了,图片也多了,这样就影响读取效率.所以有个这样的需求,把这些个图片文件移动到多个目录下,这个目录是图片的上传日期(就是文件属性中的修改日期filemtime)组成的.比如2012-12-20的修改日期,那么现在就该放在/data/images/2012/12/20的目录下. php有很容易的操作文件的函数,可以方便完成.当然也可以利用shell脚本完成. 用shell的

CodeFolderClear 自动清理代码文件夹下无用文件的小程序及源码

最近常要用U盘拷贝代码,发现编译器生成的各种中间文件占用了大量的空间,手工删除起来费时费力,所以就萌生了写一个小工具搞定这一切都念头. 说干就干,晚上熬夜搞定! 小工具程序及源码工程的下载链接:    点击下载 用简单的方式进行处理,递归删除.下面统计量下要删除的文件: 工程目录下: 工程目录的判断依据: 有工程文件 *.vcxproj *.sdf *.suo *.user 生成目录(Debug/Release等)下的文件: *.obj *.cache *.exp *.ilk *.lastbui

shell命令查看某文件夹下的文件个数

shell命令查看某文件夹下的文件个数 2010-06-25 17:05:15|  分类: shell |字号 订阅 1.查看某文件夹下文件的个数: ls -l |grep "^-"|wc -l 或 find ./company -type f | wc -l 2.查看某文件夹下文件的个数,包括子文件夹里的: ls -lR|grep "^-"|wc -l 3.查看某文件夹下文件夹的个数,包括子文件夹里的: ls -lR|grep "^d"|wc