使用 VBS 脚本检查字符串是否包含特定字符
Check if a string contains specific characters using VBS script
我的脚本正在做以下几点:
- 检索我选择的所有文件夹文件
- Class他们按日期(从最近的到旧的)
- 在 window
中显示它们
这是我的 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
为了按名称过滤我检索到的文件,我想添加以下条件:
- 对于每个文件名,如果它包含"average",则将文件名添加到table
- 否则,什么都不做
我尝试使用
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)
您看到的错误消息基本上是在抱怨第一个参数应该是一个整数,但是您给它提供了一个字符串。
我的脚本正在做以下几点:
- 检索我选择的所有文件夹文件
- Class他们按日期(从最近的到旧的)
- 在 window 中显示它们
这是我的 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
为了按名称过滤我检索到的文件,我想添加以下条件:
- 对于每个文件名,如果它包含"average",则将文件名添加到table
- 否则,什么都不做
我尝试使用
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)
您看到的错误消息基本上是在抱怨第一个参数应该是一个整数,但是您给它提供了一个字符串。