Comparación de cadenas en Batch archivo
-
Comparación de cadenas usando los comandos
if
yif-else
en el Batch archivo -
Comparación de cadenas utilizando el bucle
for
en el Batch archivo
Una cadena es una colección ordenada de caracteres.
Las cadenas se pueden comparar usando comandos condicionales en un Batch archivo, es decir, los comandos if
, if-else
y for
. Las cadenas pueden contener espacios y caracteres especiales, lo que puede provocar errores en el Batch archivo durante la ejecución normal.
Además, si la cadena contiene comillas dobles, puede provocar un error.
Este tutorial le enseñará diferentes formas de comparar cadenas en un Batch archivo usando los comandos if
, if-else
y for
.
Comparación de cadenas usando los comandos if
y if-else
en el Batch archivo
El comando if
realiza operaciones condicionales y comparaciones lógicas entre un valor establecido y un valor esperado. Puede comprobar si existe un archivo, comparar cadenas e incluso comprobar si hay errores.
Comparación de cadenas usando el comando if
Tomemos un ejemplo para verificar si las cadenas son iguales. Si son iguales, mostrará la salida con el comando echo
.
@echo off
SetLocal
set string1="Hello World"
set string2="Hello World"
if %string1% == %string2% (echo "Both the strings are equal")
cmd /k
Producción:
Comparación de cadenas usando el comando if-else
@echo off
SetLocal
set string1="Hello World"
set string2="HELLO WORLD"
set string3="Hello World"
if %string1% == %string2% (echo string 1 and string 2 are equal echo the string is %string2%) else if %string1% == %string3% (echo string1 and string 3 are equal
echo the string is %string3%) else (echo all strings are different)
cmd /k
producción:
Nota:
- No deje espacios entre corchetes.
- Cuando las cadenas o variables contengan espacios o caracteres especiales, escríbalos entre comillas dobles.
Con el comando if
, puede usar /I
para una comparación de cadenas que no distingue entre mayúsculas y minúsculas y NOT
para ejecutar el comando si la condición es falsa.
También puede utilizar operadores de comparación como EQU
(igual), NEQ
(diferente), LSS
(menor que), LEQ
(menor o igual que), GTR
(mayor o igual que a), GEQ
(mayor o igual que) para comparar los valores. Pero estos operadores no se pueden usar para comparar cadenas.
Comparación de cadenas que contienen comillas dobles mediante el comando if-else
Si la cadena o las variables contienen comillas dobles, habilite la expansión diferida con el comando SetLocal
. Usar !
en lugar de "
.
El código para el mismo se muestra en el siguiente ejemplo:
@echo off
SetLocal EnableDelayedExpansion
set string1="Hello "World""
set string2=""HELLO WORLD""
set string3="Hello World"
if !string1! == !string2! (echo "string 1 and string 2 are equal") else if !string1! == !string3! (echo "string1 and string 3 are equal") else (echo "All strings are different")
cmd /k
Producción:
Comparación de cadenas utilizando el bucle for
en el Batch archivo
El comando for
se usa para ejecutar un comando específico para cada archivo dentro de un conjunto de archivos.
Se muestra la sintaxis del comando for
en un Batch archivo.
for {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]
Tomemos un ejemplo en el que tenemos que comparar las cadenas para mostrar la versión del sistema operativo Windows:
@echo off
SetLocal EnableDelayedExpansion
for /f "usebackq tokens=1 delims=" %%I in ("C:\Users\Aastha Gas Harda\Desktop\testfile1.txt") do (
set string=%%I
echo %%I
if "%%~I" == "HelloWorld" (echo "match found") else (echo "match not found")
)
PAUSE
Producción:
En el ejemplo anterior, se usa un bucle for
para comparar el valor de la cadena. Si el valor de la cadena es igual a HelloWorld
, mostrará el resultado como match found
.
Los delims
especifican un conjunto de delimitadores, y los tokens
especifican qué tokens de cada línea se pasarán al bucle for
. El usebackq
debe usarse siempre que usemos comillas en el bucle for
.
Entonces, hemos discutido diferentes formas de comparar cadenas en archivos por lotes. Además de comparar cadenas, estos comandos condicionales también se pueden usar para encontrar valores específicos o texto de archivos de texto o archivos de registro.