vbs right remove mid instrrev instr from convert vbscript contains string-comparison

vbscript - right - Verificar si una cadena contiene caracteres específicos usando el script VBS



vbscript replace (1)

Mi script está haciendo el siguiente punto:

  1. Recuperar todos mis archivos de carpetas seleccionados
  2. Clasifíquelos por fecha (desde el reciente hasta el anterior)
  3. Muéstrales en una ventana

Aquí está mi VBS Script (lo recupero aquí ):

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

Para filtrar por nombre mis archivos recuperados, me gustaría agregar la siguiente condición:

  • Para cada nombre de archivo, si contiene "promedio", agregue el nombre del archivo a la tabla
  • De lo contrario, no hacer nada

Intenté usar

Si InStr (Tableau (1, i), "promedio", vbTextCompare)> 0 Entonces

Pero me muestra este error:


Está utilizando InStr incorrectamente. Tu codigo:

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

La firma de InStr es:

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

Pero el problema aquí es que tiene dos parámetros opcionales, uno de ellos está en el frente, con una condición especial:

Opcional. Especifica la posición de inicio para cada búsqueda. La búsqueda comienza en la primera posición de personaje (1) por defecto. Este parámetro es obligatorio si se especifica la comparación

Entonces, como está utilizando el cuarto parámetro con el valor vbTextCompare , también debe especificar el punto de inicio en el primer parámetro, que sería 1 (primer carácter) en su caso. Entonces, el código corregido es:

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

El mensaje de error que ves básicamente se queja de que se espera que el primer parámetro sea un entero, pero le estás dando una cadena.

Ver documentos InStr .