243 votes

Fichier batch : Trouver si la sous-chaîne est dans une chaîne de caractères (pas dans un fichier)

Dans un fichier batch, j'ai une chaîne abcdefg . Je veux vérifier si bcd est dans la chaîne.

Malheureusement, il semble que toutes les solutions que j'ai trouvées cherchent un fichier pour une sous-chaîne, et non une chaîne pour une sous-chaîne.

Existe-t-il une solution simple pour cela ?

7 votes

D'habitude, c'est soit Windows y cmd o c'est ms-dos . MSDOS ne fait plus partie de Windows depuis un an. long temps.

5voto

Andy Sug Points 214

J'arrive probablement un peu tard avec cette réponse, mais la réponse acceptée ne fonctionne que pour vérifier si une "chaîne codée en dur" fait partie de la chaîne de recherche.

Pour la recherche dynamique, vous devez procéder ainsi :

SET searchString=abcd1234
SET key=cd123

CALL SET keyRemoved=%%searchString:%key%=%%

IF NOT "x%keyRemoved%"=="x%searchString%" (
    ECHO Contains.
)

Note : Vous pouvez prendre les deux variables comme arguments.

4voto

Navas Ema Points 61

Pour trouver un texte dans le Var, Exemple :

var_text="demo string test"
Echo.%var_text% | findstr /C:"test">nul && (
    echo "found test" 
    ) || Echo.%var_text% | findstr /C:"String">nul && (
             echo "found String with S uppercase letter" 
    ) || (
             echo "Not Found " 
    )

LEGENDE :

  1. & Exécuter_cela ET exécuter_cela
  2. || Ex : Exécuter cela SI_ÉCHEC exécuter cela
  3. && Ex : Exécuter que si le succès est au rendez-vous, exécuter ceci.
  4. >nul no echo résultat de la commande
  5. findtr
  6. /C: Utiliser la chaîne de caractères comme chaîne de recherche littérale

0 votes

Pouvez-vous ajouter un peu de contexte autour de votre réponse, s'il vous plaît ?

1voto

snm-yah Points 2067

La meilleure réponse était aquí :

set "i=hello " world"
set i|find """" >nul && echo contains || echo not_contains

0 votes

Dans la question que vous liez, l'utilisation de SET répond à un besoin spécifique et unique, il est donc important de mentionner "SET". Cependant, cela ne semble pas ajouter quoi que ce soit à la discussion actuelle, car la méthode consistant à envoyer une commande à la commande FIND et à tester le résultat est déjà fournie.

1voto

Riccardo La Marca Points 209
ECHO %String%| FINDSTR /C:"%Substring%" && (Instructions)

1voto

Zimba Points 156

Les solutions qui recherchent un fichier pour une sous-chaîne peut également rechercher un cadena par exemple. find o findstr .
Dans votre cas, le solution facile serait de passer une chaîne dans la commande au lieu de fournir un nom de fichier, par exemple.

chaîne de caractères sensible à la casse :
echo "abcdefg" | find "bcd"

ignore la casse de la chaîne :
echo "abcdefg" | find /I "bcd"

Si aucune correspondance n'est trouvée, vous obtiendrez une ligne de réponse vide sur CMD et %ERRORLEVEL% fixé à 1.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X