Comparación de cadenas en Batch archivo

Siddharth Bishnoi 20 marzo 2023
  1. Comparación de cadenas usando los comandos if y if-else en el Batch archivo
  2. Comparación de cadenas utilizando el bucle for en el Batch archivo
Comparación de cadenas en 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

archivo de prueba si comando

Producción:

salida si comando

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

archivo de prueba si no

producción:

salida si el comando más

Nota:

  1. No deje espacios entre corchetes.
  2. 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

testfile if else cadena con comillas dobles

Producción:

salida si más cadenas con comillas dobles

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

archivo de prueba para bucle

Producción:

salida para bucle

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.

Artículo relacionado - Batch String