Vbscript VB Do While仅适用于一次迭代
我以前从未用VB做过任何事情,我正试图用这个脚本解决一个小问题。基本上,脚本应该查找文件夹中的所有JPG,如果文件名已存在,请将其从目标文件夹中删除,将值添加到表中,然后重命名源文件,使其存在于目标文件夹中 此脚本在某种程度上起作用,例如,如果文件不存在,它将重命名任何文件,但对于任何已经存在的文件,它只处理一个文件,然后结束。我可以多次运行它来清除其余部分,但更希望它一次清除所有部分。我读了不少书,但看不出哪里出了问题。有人能解释一下吗Vbscript VB Do While仅适用于一次迭代,vbscript,Vbscript,我以前从未用VB做过任何事情,我正试图用这个脚本解决一个小问题。基本上,脚本应该查找文件夹中的所有JPG,如果文件名已存在,请将其从目标文件夹中删除,将值添加到表中,然后重命名源文件,使其存在于目标文件夹中 此脚本在某种程度上起作用,例如,如果文件不存在,它将重命名任何文件,但对于任何已经存在的文件,它只处理一个文件,然后结束。我可以多次运行它来清除其余部分,但更希望它一次清除所有部分。我读了不少书,但看不出哪里出了问题。有人能解释一下吗 Public Function GetLPUFileAd
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
公共函数GetLPUFileAddress()
作为字符串的Dim strSourceFolder
作为字符串的Dim strFile
将strTargetFolder设置为字符串
Dim数据库作为DAO.Database
将rstMgr设置为DAO.Recordset
strSourceFolder=“C:\Users\Images\LPU-HOLDING\”
strFile=Dir(strSourceFolder&“*.JPG”)
strTargetFolder=“C:\Users\Images\LPU\”
当strFile“”时执行
如果Dir(strTargetFolder&strFile)“,则杀死strTargetFolder&strFile
CurrentDb.Execute“INSERT INTO TBL_LPU(文件名,导入日期)值(“&strFile&”,Date())”
将strSourceFolder和strFile命名为strTargetFolder和strFile
strFile=Dir
环
端函数
通过调用带有适当筛选器的Dir()
函数,例如“C:\Users\Images\LPU\*.JPG”
,可以启动枚举并获取第一个文件名。之后,在没有任何参数的情况下反复调用
Dir()
函数,您将获得所有*.JPG
文件名,每次调用一个。如果在任何时候使用参数调用
Dir()
,这将重置当前枚举并启动新的枚举
因此,在使用Dir()
枚举时,不能使用Dir()
检查文件夹中是否存在文件。这将重置枚举
你要么使用,要么不检查就杀死它。这是在VB6.3中。不确定这是否有任何关联。感谢您的解释,我不知道第二个Dir()调用会重置参数。我会看看你们建议的替代方法,看看我是否能让其他方法发挥作用。我打算建议使用FOR-EACH循环,而不是DO-WHILE循环。当然,您需要使用@GSerg建议的FileScriptingObject。您可以读取文件夹中的每个文件,然后从中执行逻辑。下面是一个例子: