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
ifest l’essentiel de cette solution, tout le reste est du code de support. -
Le
xavant les deux cotes de l’egalite est la pour s’assurer que la chainebcdfonctionne correctement. Il protege egalement contre certains caracteres de debut “inappropries”.