使用 VBS 脚本检查字符串是否包含特定字符

Check if a string contains specific characters using VBS script

我的脚本正在做以下几点:

  1. 检索我选择的所有文件夹文件
  2. Class他们按日期(从最近的到旧的)
  3. 在 window
  4. 中显示它们

这是我的 VBS 脚本(我检索它 here):

    Option Explicit

    Const PathMDB   = "C:\Users\C8461789\Desktop\test_script" 

    MsgBox TriRepertoire,,"Enumération " & PathMDB
    '---lister les fichiers du répertoire ---
    Function TriRepertoire()
    Dim fso, fichier, fileItem
    Dim i, imax, z, valeur, cible, liste
    Set fso = CreateObject("Scripting.FileSystemObject")

    imax = 0
    'début de l'énumération
    For Each fichier In fso.GetFolder(PathMDB).Files
    Set fileItem = fso.GetFile(fichier)

    imax = imax + 1
    ReDim Preserve Tableau(2, imax)
    Tableau(1, imax) = Fichier.Name
    Tableau(2, imax) = FileItem.DateLastModified

    '---trier les fichiers par ordre décroissant de création ---
    Do
    Valeur = 0
    For i = 1 To imax - 1
        If InStr(Tableau(1,i), "average", vbTextCompare) > 0 Then
            If CDate(Tableau(2, i)) < CDate(Tableau(2, i + 1)) Then
                For z = 1 To 2
                   Cible = Tableau(z, i)
                   Tableau(z, i) = Tableau(z, i + 1)
                   Tableau(z, i + 1) = Cible
                Next
                Valeur = 1
            End If
        End If
    Next 
    Loop While Valeur = 1
    Set fileItem = nothing
    Next

    'Affichage du résultat classé
    For i = 1 To imax
    'If IsNull(Tableau) Then
        liste = liste &vbTab& Tableau(1, i) &vbCr 
    'End If
    Next
    TriRepertoire = liste

    Set fso = nothing 
    End Function

为了按名称过滤我检索到的文件,我想添加以下条件:

我尝试使用

If InStr(Tableau(1,i), "average", vbTextCompare) > 0 Then

但它向我显示了这个错误:

您使用的 InStr 不正确。您的代码:

InStr(Tableau(1,i), "average", vbTextCompare)

InStr 的签名是:

InStr([start,]string1,string2[,compare])

但是这里的问题是它有两个可选参数,其中一个在前面,有一个特殊的条件:

Optional. Specifies the starting position for each search. The search begins at the first character position (1) by default. This parameter is required if compare is specified

因此,因为您使用的是值为 vbTextCompare 的第四个参数,所以您还需要在第一个参数中指定起点,即 1(第一个字符)案件。所以,更正后的代码是:

InStr(1, Tableau(1,i), "average", vbTextCompare)

您看到的错误消息基本上是在抱怨第一个参数应该是一个整数,但是您给它提供了一个字符串。

InStr docs