1

我需要检查目录中是否存在文件。我想到的两个选项是使用正则表达式 ( vbscript.regexp) 来确定文件是否存在。另一种选择是使用FileSystemObject'FileExists方法。

使用正则表达式的缺点意味着我需要遍历目录中的每个文件并针对每个文件名测试正则表达式。其次,正则表达式方法将来可能更难维护(正则表达式)。但是,我需要测试两个正则表达式,因为同一文件可能有不同的版本。对于其中一个文件,文件名的描述部分经常更改(好吧,这是一个谎言 - 它会在某个随机周期中更改),因此无论这部分如何,使用正则表达式都将有助于匹配文件 = 更健壮的代码.

使用FileExists,我可以同时测试两个文件,并且根据每次检查返回的布尔值,处理可以继续。使用的相关缺点FileExists是不支持通配符匹配,因此在考虑带有描述的文件名时,总是需要更新以反映新的描述=更多的维护问题。但是,它更容易掌握,也更容易改变。

文件名格式:

Data_Sheet_<yyyymmdd>_D.xlsx // the normal file
Data_Sheet_<yyyymmdd>_D_<some description>.xlsx // the alternate file

文件名的<yyyymmdd>部分将由文件所在的当前文件夹决定。

问题:使用正则表达式还是简单的 FileExists 来查找文件会更好吗?

我将在 Excel vba 宏中使用上述任一方法。

4

1 回答 1

2

你看过Dir()吗?你可以给它传递通配符 Likemy*file.pd? 也许这可能是一种妥协的方式。当然,您不会获得正则表达式的全部功能,但您可以限制您的文件,然后实际测试以查看存在的内容。

就个人而言,我会使用FileExists()而不是遍历目录并测试每个文件。如果目录变得比您的循环更大,则可能需要永远。虽然如果你使用Dir()你可能会限制你需要迭代的文件数量。PlusFileExists()只是一行/语句并且更清晰......尽管如此你必须确保脚本运行时包含在你的项目中

http://techonthenet.com/excel/formulas/dir.php http://www.blueclaw-db.com/listbox-directory.htm http://www.hobbub.com/vba-vb-vsto/iterating-在一个目录-with-a-dir-loop-loop-through-directory-vb/

第二个和第三个链接有更好的遍历目录的例子。

于 2010-11-23T09:15:52.340 回答