VB Do虽然只适用于一次迭代

时间:2012-08-21 15:13:04

标签: vbscript

我之前从未做过任何事情,我正试图解决这个脚本的一个小问题。基本上,脚本应查找文件夹中的所有jpgs,如果文件名已存在,则已将其从目标文件夹中删除,将值添加到表中,然后重命名源文件,使其存在于目标文件夹中。

此脚本在某种程度上有效,例如,如果文件不存在,它将重命名任何文件,但对于已存在的任何文件,它只处理一个然后结束。我可以多次运行它来清除其余部分但是宁愿它一次性清除它们。我做了很多阅读,但看不出有什么问题。任何人都可以对此有所了解吗?

Public Function GetLPUFileAddress()

Dim strSourceFolder As String
Dim strFile As String
Dim strTargetFolder As String

Dim dbs As DAO.Database
Dim rstMgr As DAO.Recordset

strSourceFolder = "C:\Users\Images\LPU-HOLDING\"
strFile = Dir(strSourceFolder & "*.JPG")
strTargetFolder = "C:\Users\Images\LPU\"

Do While strFile <> ""
    If Dir(strTargetFolder & strFile) <> "" Then Kill strTargetFolder & strFile
    CurrentDb.Execute "INSERT INTO TBL_LPU ( File_Name, Import_Date ) VALUES ('" & strFile & "',Date())"
    Name strSourceFolder & strFile As strTargetFolder & strFile
    strFile = Dir
Loop

End Function

1 个答案:

答案 0 :(得分:4)

通过使用适当的过滤器(例如Dir())调用"C:\Users\Images\LPU\*.JPG"函数,可以启动枚举并获取第一个文件名。
之后,在没有任何参数的情况下反复调用Dir()函数,您将获得所有*.JPG个文件名,每个调用一个。 如果您在任何时候使用参数调用Dir(),这将重置当前枚举并开始新的枚举。

因此,当您使用Dir()枚举时,无法使用Dir()检查文件夹中文件的存在。这会重置枚举。

您必须使用some other waychecking existance of the file,或者只是尝试杀死它而不检查ignoring the error