Fichier batch : trouver si une sous-chaine est dans une chaine (pas dans un fichier)

Fichier batch : trouver si une sous-chaine est dans une chaine (pas dans un fichier)

Oui, vous pouvez utiliser des substitutions et comparer avec la chaine originale :

if not x%str1:bcd=%==x%str1% echo It contains bcd

La partie %str1:bcd=% remplacera bcd dans str1 par une chaine vide, la rendant differente de l’originale.

Si l’originale ne contenait pas de chaine bcd, la version modifiee sera identique.

Tester avec le script suivant le montrera en action :

@setlocal enableextensions enabledelayedexpansion
@echo off
set str1=%1
if not x%str1:bcd=%==x%str1% echo It contains bcd
endlocal

Et les resultats de differentes executions :

c:\testarea> testprog hello

c:\testarea> testprog abcdef
It contains bcd

c:\testarea> testprog bcd
It contains bcd

Quelques remarques :

  • L’instruction if est l’essentiel de cette solution, tout le reste est du code de support.

  • Le x avant les deux cotes de l’egalite est la pour s’assurer que la chaine bcd fonctionne correctement. Il protege egalement contre certains caracteres de debut “inappropries”.