zoukankan      html  css  js  c++  java
  • VBS递归遍历文件和dictionary使用

    最近在做一个VBS脚本过滤文件的操作,发现确实遇到了不少问题。就简单的遍历文件操作是很简单的,相信大家也都会。但是却在过滤文件的操作中出现了不少的问题。

    1,将过滤到的文件名称存放在dictionary中,发现在递归中dictionary每次都会再次生成一个dictionary对象,所以始终dictionary的数据是变动的,而且是最后一次操作文件夹或者是文件的数据集。过滤文件失败!

    2,采用function的返回值的时候,发现function在遇到递归的操作的时候function返回的值并不能保存起来,也就是vbs的变量都是临时的不是保存在内存中的,所以function在递归多次操作的始终返回的是empty,糟糕之极!过滤文件返回字符串失败!

    3,for循环中的返回值,需要对于要返回的值赋值给另一个变量,然后将function的返回值对应于该变量;

    4,直接跳出当前的function的方法为wscript.quit,而对于exit function是不起作用的。

    最终不能再想到别的解决方法了,于是就采用了下面的一个不愿意的方式。

    将所有的过滤的文件都保存在一个永久储存的地方,就是文件中。

    以后如果想要获取这些过滤到的文件直接读取文件中的过滤结果即可。

    以下是我的一个设计方案,遍及指定的文件夹,过滤掉文件名是某某的文件。

    '*******************************************************************************************
    '
    '功能:遍历环境变量中预设的数据值路径,然后过滤找到指定的文件名,并存放在text文件中
    '参数:datapath表示查找文件的路径,filename表示需要查找的文件名称,文件名支持模糊名称
    '返回值:无
    '*******************************************************************************************
    Function tempFilePath(datapath,filename)
       On error resume next
       Set fso=createobject("scripting.filesystemobject")
       If fso.FolderExists(datapath) Then
           Set firstsub=fso.GetFolder(datapath)
           For each testfolder in firstsub.SubFolders
               strpath=datapath&"\"&testfolder.name
               tempFilePath strpath,filename
           Next
           For each testfile in firstsub.Files
              ' print testfile.name
               If instr(1,testfile.name,filename,1)<>0 Then
                    logpath=environment.Value("RunLogs")
                    'If not fso.FileExists(logpath&"\FilePaths.txt") Then
                        set logfile=fso.CreateTextFile(logpath&"\FilePaths.txt",true)
                        logfile.WriteLine testfile.path
                else
                    'ReportProgress(Text, Title, TimeOut)
                     'ReportProgress "在指定的路径下没有找到你需要的文件"
               End If
           Next
        else
          'ReportProgress(Text, Title, TimeOut)
                ReportProgress "enviroment文件中的测试路径找不到,请确认你的environment文件配置正确!",2
       End If
         logfile.Close
         Set logfile=nothing
         Set firstsub=nothing
        Set fso=nothing
    End Function
  • 相关阅读:
    第六章_编写定制标签
    C递归算法与栈的分析,非全然二叉树遍历分析---ShinePans
    Linux面试必问-对照目录内容的命令“Diff”具体解释
    微信公众平台开发(73) 客服接口发送客服消息
    微信公众平台开发(94) 违章查询
    微信支付类目及费率
    微信公众平台开发入门教程(三)消息类型讲解
    微信公众平台开发入门教程(二)启用开发模式
    微信公众平台开发入门教程(四)获取接收消息
    微信公众平台开发调试方法
  • 原文地址:https://www.cnblogs.com/seniortestingdev/p/2416743.html
Copyright © 2011-2022 走看看