Pour des raisons de compatibilité et de facilité d'utilisation, il est souvent préférable d'utiliser FIND pour ce faire.
Vous devez également considérer si vous souhaitez faire correspondre les cas sensibles ou les cas insensibles.
La méthode avec 78 points (je crois que je faisais référence au post de paxdiablo) ne correspondra que de manière sensible à la casse, donc vous devez mettre une vérification séparée pour chaque variation de casse pour chaque itération possible que vous voulez correspondre.
( Quelle douleur ! Avec seulement 3 lettres, cela signifie 9 tests différents afin d'accomplir le contrôle ! )
En outre, il est souvent préférable de faire correspondre la sortie de commande, une variable dans une boucle ou la valeur d'une variable pointeur dans votre batch/CMD, ce qui n'est pas aussi simple.
Pour ces raisons, il s'agit d'une méthodologie alternative préférable :
Utiliser : Trouver [/I] [/V] "Caractères à faire correspondre".
[/I] (insensible à la casse) [/V] (Ne doit PAS contenir les caractères)
En tant que ligne unique :
ECHO.%Variable% | FIND /I "ABC">Nul && ( Echo.Found "ABC" ) || ( Echo.Did not find "ABC" )
Multi-ligne :
ECHO.%Variable%| FIND /I "ABC">Nul && (
Echo.Found "ABC"
) || (
Echo.Did not find "ABC"
)
Comme nous l'avons mentionné, cette méthode est idéale pour les éléments qui ne sont pas dans des variables qui permettent également la substitution de chaînes de caractères :
FOR %A IN (
"Some long string with Spaces does not contain the expected string"
oihu AljB
lojkAbCk
Something_Else
"Going to evaluate this entire string for ABC as well!"
) DO (
ECHO.%~A| FIND /I "ABC">Nul && (
Echo.Found "ABC" in "%A"
) || ( Echo.Did not find "ABC" )
)
Output From a command:
NLTest | FIND /I "ABC">Nul && ( Echo.Found "ABC" ) || ( Echo.Did not find "ABC" )
As you can see this is the superior way to handle the check for multiple reasons.
7 votes
D'habitude, c'est soit
Windows
ycmd
o c'estms-dos
. MSDOS ne fait plus partie de Windows depuis un an. long temps.