处理文件如果是FileExists和第二个FileExists

时间:2016-05-15 20:47:06

标签: vbscript

`好的,我被要求在我的问题中更具体。我的文件夹中有不确定数量的文件,例如:

  1. NV_A1_mainx.dxf
  2. NV_A1_resx.dxf
  3. NV_B1_mainx.dxf
  4. NV_B1_motx.dxf
  5. NV_B1_motlx.dxf
  6. 文件夹循环处理每个文件基于InStr“mainx”,“motx”或“resx”。在“motx”类型文件上我希望脚本搜索并查看是否有其他匹配类型文件“motlx”如果有,它将以一种方式处理。如果没有,它将处理第二种方式。文件名将不同但文件名约定将始终有两个下划线“_”后跟我搜索的InStr字符。

    以上面的文件为例,我希望编写一个声明,以便在处理NV_A1_motx.dxf时,它会检查文件夹中是否有匹配的NV_B1_motlx.dxf。

    问题是我脚本的最后一行。如何为“motx”正确编写该语句,以查看文件夹中是否还存在“motlx”文件?

    Thx ...希望能更好地澄清我的意图。

    Set App = CreateObject("Illustrator.Application")
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set SourceFolder = FSO.GetFolder("S:\SOCAL\Section_13\Road DXFs")
    Set DXFfile = SourceFolder.Files
    Set DXFfolder = FSO.GetFolder(SourceFolder)                                  
    
    
    Dim FileRef
    For Each FileRef In SourceFolder.Files
       If Instr(FileRef,"motx") > 0 then
           Call Motx(FileRef)
       ElseIf Instr(FileRef,"mainx") > 0 then
           Call Mainx(FileRef)
       ElseIf Instr(FileRef,"resx") > 0 then
       Call Resx(FileRef)
       Else
           Msgbox "File is not being found or some issue with script."
       End If
    Next
    
    Sub Motx(FileRef)
    
    If ((App.Documents.Count > 0) And (FileExists("S:\SOCAL\Section_13\Road DXFs\SOCAL_B2_motlx.dxf"))) Then
    Else
    

    感谢您输入Jose。我在插入代码时遇到错误,所以我所做的只是将代码删除到基础知识,看看你的代码是否会找到匹配的文件。我在文件夹中所做的只有两个文件:

    NV_B2_motlx.dvx和 NV_B2_motx.dvx

    使用您的脚本进行测试:

    Set App = CreateObject("Illustrator.Application")
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set SourceFolder = FSO.GetFolder("S:\SOCAL\Section_13\Road DXFs")
    Set DXFfile = SourceFolder.Files
    Set DXFfolder = FSO.GetFolder(SourceFolder)
    
    For Each FileRef In SourceFolder.Files
        ' default property of `FileRef` object is `Path`
        If Instr( FileRef.Name, "motx", vbTextCompare) > 0 Then
       I    f fso.FileExists( fso.BuildPath( fso.GetParentFolderName( objFile.Path), _
                 Replace( FileRef.Name, "motx", "motlx", 1, -1, vbTextCompare))) Then
               'motlx' exists
               MsgBox "We have a match!"
           Else
               'motlx' does not exist
               MsgBox "Sorry, no match"
           End If
        End If
    Next
    

    运行此命令我收到以下错误消息:类型不匹配:'[string:“NV_B2_motlx.dxf”]'代码800A000D第9行字符5。

1 个答案:

答案 0 :(得分:1)

也许这段代码存根可以提供帮助:

Dim FileRef
For Each FileRef In SourceFolder.Files
    ' default proprty of `FileRef` object is `Path`
    If Instr( FileRef.Name, "motx", vbTextCompare) > 0 Then
       If fso.FileExists( fso.BuildPath( fso.GetParentFolderName( objFile.Path), _
             Replace( FileRef.Name, "motx", "motlx", 1, -1, vbTextCompare))) Then
           'motlx' exists
       Else
           'motlx' does not exist
       End If

参考: