Vbscript 处理文件(如果文件存在且第二个文件存在)

Vbscript 处理文件(如果文件存在且第二个文件存在),vbscript,Vbscript,`好的,我被要求在我的问题中更具体一些。我的文件夹中有数量未知的文件,例如: NV_A1_mainx.dxf NV_A1_resx.dxf NV_B1_mainx.dxf NV_B1_motx.dxf NV_B1_motlx.dxf 文件夹根据InStr“mainx”、“motx”或“resx”循环处理每个文件。在“motx”类型文件上,我希望脚本搜索并查看是否有其他匹配类型文件“motlx”。如果有,它将以一种方式处理。如果没有,它将以另一种方式处理。文件名将不同,但文件名约定始终有两个下划线

`好的,我被要求在我的问题中更具体一些。我的文件夹中有数量未知的文件,例如:

  • NV_A1_mainx.dxf
  • NV_A1_resx.dxf
  • NV_B1_mainx.dxf
  • NV_B1_motx.dxf
  • NV_B1_motlx.dxf
  • 文件夹根据InStr“mainx”、“motx”或“resx”循环处理每个文件。在“motx”类型文件上,我希望脚本搜索并查看是否有其他匹配类型文件“motlx”。如果有,它将以一种方式处理。如果没有,它将以另一种方式处理。文件名将不同,但文件名约定始终有两个下划线“\u1”,后跟我搜索的指令字符

    以上述文件为例,我希望编写一条语句,以便在处理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。

    此代码存根可能有帮助:

    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
    
    参考:

    • 安装
      更换
    • .Name
      .Path
    • .BuildPath
      .GetParentFolderName

    请回答您的问题,并为您的问题添加合理的解释。尽可能多地添加详细信息。内容过于宽泛:…基于其文件名-如何基于?其他位置的特定子字符串?或起始子字符串?基于正则表达式的匹配?两个文件的相同规则?或相关规则?或独立规则?或您是否有文件名对列表?等等,以及可能最重要的查询:如果有更多(1+)个文件符合第一种类型标准,以及更多(2+)个文件,该怎么办符合第二类标准的文件,然后…每第二个?处理第一个?或者不管第二个计数?…或其他顺序如何处理第一个?请给出这样的规则。即使有您新添加的信息,我也无法理解您的问题是什么,因为您没有在一句话中提及。您的实际问题是什么em?问题是我脚本的最后一行。如何正确地为“motx”编写该语句,以查看文件夹中是否也存在“motlx”文件?