2016-04-26 43 views
3

我的脚本执行以下操作点的特定字符:检查字符串包含采用VBS脚本

  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,1), “平均”,vbTextCompare)> 0,则

但它表明我这个错误: enter image description here

+0

有趣的是,当我谷歌['vbscript“type incompatible”“string”'](https://www.google.com/search?safe=off&q=vbscript%20%22type%20incompatible%22%20%22string% 22&rct = j)返回的结果都与法语代码实现有关,这使我认为这与法语和WScript之间的兼容性有关。 – Lankymart

+1

这看起来是一个类似的问题可能会有所帮助。 [主题:type incompatible:'CDbl'800A00D(line 75)](http://forum.forensit。COM/forum_posts.asp?TID = 371)。 – Lankymart

回答

3

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

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

InStr的签名是:

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

但疑难杂症在这里的是,它有两个可选参数,他们在前面正在之一,一个特殊的条件:

可选。指定每个搜索的起始位置。搜索默认从第一个字符位置(1)开始。 如果比较指定

,是因为你使用的是第四个参数与值vbTextCompare,则需要此参数,你需要指定的第一个参数的出发点也是如此,这将是1(第一个字符)在你的情况。因此,更正后的代码是:

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

你看到的基本上都是错误消息抱怨说,第一个参数预期为一个整数,但是你喂养它的字符串。

请参阅InStr docs

+1

Doh错过了,赶上! – Lankymart

相关问题