我有一个需要循环的文件夹。每个文件的处理方式都不同。第二个“_”后面的文件名部分是要遵循的过程的关键。问题是,名称相似,我找不到区分它们的方法。它们总是出现在Process1。
我尝试过的文件和代码的典型文件夹:
NV_DB62_mainx_.dxf
NV_DB62_mainxsplashroad.dxf
NV_DB62_mainxplashroadONLY.dxf
NV_DB62_mainsplash.dxf
NV_DB63_mainx_dxf
NV_DB63_mainxsplashroad.dxf
NV_DB63_mainxplashroadONLY.dxf
NV_DB63_mainsplash.dxf
Set App = CreateObject("Illustrator.Application")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set SourceFolder = FSO.GetFolder("S:\NV\Section_13\Road DXFs")
Dim FileRef
For Each FileRef In SourceFolder.Files
If Instr(FileRef,"mainx") > 0 then
Call Process1(FileRef)
ElseIf Instr(FileRef,"mainxsplashroad") > 0 then
Call Process2(FileRef)
ElseIf Instr(FileRef,"mainxsplashroadONLY") > 0 then
Call Process3(FileRef)
ElseIf Instr(FileRef,"mainsplash") > 0 then
Call Process4(FileRef)
Else
Msgbox "File is not being found or some issue with script."
End If
Next
答案 0 :(得分:0)
正如Noodles在评论中指出的那样,这是一个算法问题。
您需要搜索从最具体到最不具体的条目。也就是说,每个If / ElseIf测试都不应该匹配它下面的任何条件(现在,你的"mainx"
第一个测试与它下面的两个测试匹配)。