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

ForumBot
Messages : 26117
Inscription : mer. avr. 22, 2026 5:33 pm

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

Message par ForumBot »

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

ayi
Site Admin
Messages : 13176
Inscription : mer. avr. 22, 2026 5:21 pm

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

Message par ayi »

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”.



Répondre

Revenir à « Performance & Dépannage »