2016-04-26 9 views
3

Мой скрипт делает следующий пункт:Проверьте, если строка содержит специальные символы с помощью VBS скрипт

  1. Извлечь все мои выбранные файлы FOLDER
  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 

Для того, чтобы фильтровать по имени моих извлекаемых файлов, я хотел бы добавить следующее условие:

  • Для каждого имени файла, если он содержит «средний», добавить имя файла в таблицу
  • Иначе ничего не делать

Я пытался использовать

If InStr (Tableau (1, я), "средний", vbTextCompare)> 0 Тогда

Но он показывает мне эту ошибку: enter image description here

+0

Интересно, когда тип google ['vbscript" несовместим "" строка "'] (https://www.google.com/search?safe=off&q=vbscript%20%22type%20incompatible%22%20%22string% 22 & rct = j) все полученные результаты относятся к реализациям французского кода, что заставляет меня думать, что это связано с совместимостью между французским языком и WScript. – Lankymart

+1

Это похоже на аналогичную проблему. [Тема: тип несовместимый: «CDbl» 800A00D (строка 75)] (http: //forum.forensit.ком/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

Смежные вопросы