【问题标题】:Check if a string contains specific characters using VBS script使用 VBS 脚本检查字符串是否包含特定字符
【发布时间】:2016-08-20 05:42:52
【问题描述】:

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

  1. 检索我选择的所有文件夹文件
  2. 按日期对它们进行分类(从最近的到较旧的)
  3. 在窗口中显示它们

这是我的 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

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

  • 对于每个文件名,如果包含“平均”,则将文件名添加到表格中
  • 否则,什么也不做

我尝试使用

如果 InStr(Tableau(1,i), "average", vbTextCompare) > 0 那么

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

【问题讨论】:

标签: vbscript contains string-comparison


【解决方案1】:

您错误地使用了InStr。你的代码:

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

InStr 的签名是:

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

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

可选。指定每次搜索的起始位置。默认情况下,搜索从第一个字符位置 (1) 开始。 如果指定了 compare,则此参数是必需的

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

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

你看到的错误信息基本上是抱怨第一个参数应该是一个整数,但是你给它一个字符串。

InStr docs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-08
    • 1970-01-01
    • 2010-12-20
    • 2021-12-05
    • 2019-08-15
    • 1970-01-01
    • 2016-08-24
    • 2013-12-23
    相关资源
    最近更新 更多