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
  • 相关阅读:
    OSG-提示“error reading file e:1.jpg file not handled”
    OSG-加载地球文件报0x00000005错误,提示error reading file simple.earth file not handled
    QT-找开工程后,最上方提示the code model could not parse an included file, which might lead to incorrect code completion and highlighting, for example.
    我的书《Unity3D动作游戏开发实战》出版了
    java中无符号类型的第三方库jOOU
    Windows批处理备份mysql数据
    使用 DevTools 时,通用Mapper经常会出现 class x.x.A cannot be cast to x.x.A
    Java版本,Java版本MongoDB驱动,驱动与MongoDB数据库,Spring之间的兼容性
    Jrebel本地激活方法
    wget下载指定网站目录下的所有内容
  • 原文地址:https://www.cnblogs.com/seniortestingdev/p/2416743.html
Copyright © 2011-2022 走看看