J'ai un fichier texte qui contient 2 lignes d'une phrase. À la fin de la deuxième ligne, j'ai un mot qui dit Alive . Il peut être vivant ou en panne.
Maintenant, je dois écrire une instruction IF telle que si ce fichier texte contient Alive, il devrait afficher Hi sinon, il devrait afficher Hello . Cela doit être fait en utilisant un fichier de commandes.
windows
windows-server-2008
utilisateur284262
la source
la source
Réponses:
Ce lot lit dans votre fichier texte avec le
/N
commutateur, ce qui met un numéro devant chaque ligne, comme:Le nouveau texte est redirigé vers le second findstr , qui utilise le modèle RegEx
^2.*alive$
pour rechercher une ligne commençant par2
et se terminant paralive
. C'était la partie difficile.Puisque findstr définit le niveau d'erreur sur 0 si au moins une correspondance est trouvée, nous pouvons utiliser une simple instruction IF pour indiquer "Bonjour" ou "Bonjour".
Lot en détail
findstr
recherche des chaînes dans les fichiers/N
met un numéro de ligne devant chaque ligne.
est un joker pour n'importe quel caractère. Il dit à findstr de tout rechercher|
est la commande de pipe. La sortie de la première commande est passée en entrée pour la seconde./I
indique à findstr de rechercher sans tenir compte de la casse afin de trouver "Alive" et "alive"^
est un terme RegEx et représente un début de ligne.*
est un terme RegEx et représente un nombre indéfini de caractères$
est un terme RegEx et représente une fin de ligne> NUL
masque la sortie findstr pour que la ligne correspondante ne soit pas affichée dans la fenêtre CMDIF condition (command) ELSE (command)
est une simple condition IF%ERRORLEVEL% EQU 0
est le code de sortie de findstr. "EQU" signifie "equel"Modifier ( exemple tiré du commentaire de l'OP ci-dessous)
Après "Alive" il y a trois espaces dans votre exemple, donc
alive$
ne correspond pasChanger
^2.*alive$
en5.*alive
. Ou encore mieux^5.* Alive $
Notez les espaces.
la source