배치 파일의 문자열 비교

Siddharth Bishnoi 2023년3월20일
  1. 배치 파일에서 ifif-else 명령을 사용한 문자열 비교
  2. 배치 파일에서 for 루프를 사용한 문자열 비교
배치 파일의 문자열 비교

문자열은 정렬된 문자 모음입니다.

문자열은 Batch 파일의 조건부 명령(예: if, if-elsefor 명령)을 사용하여 비교할 수 있습니다. 문자열에는 공백과 특수 문자가 포함될 수 있으므로 정상적인 실행 시 Batch 파일에 오류가 발생할 수 있습니다.

또한 문자열에 큰따옴표가 있으면 오류가 발생할 수 있습니다.

이 자습서에서는 if, if-elsefor 명령을 사용하여 Batch 파일에서 문자열을 비교하는 다양한 방법을 설명합니다.

배치 파일에서 ifif-else 명령을 사용한 문자열 비교

if 명령은 설정 값과 예상 값 간의 조건부 연산 및 논리적 비교를 수행합니다. 파일이 존재하는지 확인하고 문자열을 비교하며 오류를 확인할 수도 있습니다.

if 명령을 사용한 문자열 비교

문자열이 같은지 확인하는 예를 들어 보겠습니다. 같으면 echo 명령으로 출력을 표시합니다.

@echo off
SetLocal

set string1="Hello World"
set string2="Hello World"

if %string1% == %string2% (echo "Both the strings are equal")
cmd /k

명령인 경우 테스트파일

출력:

명령이면 출력

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

다른 경우 테스트파일

출력:

다른 명령이면 출력

메모:

  1. 괄호 사이에 공백을 두지 마십시오.
  2. 문자열이나 변수에 공백이나 특수 문자가 포함된 경우 큰따옴표로 묶습니다.

if 명령을 사용하면 대소문자를 구분하지 않는 문자열 비교에 /I를 사용하고 조건이 거짓인 경우 NOT를 사용하여 명령을 실행할 수 있습니다.

EQU(같음), NEQ(같지 않음), LSS(보다 작음), LEQ(작거나 같음), GTR(크거나 같음)과 같은 비교 연산자를 사용할 수도 있습니다. to), GEQ(크거나 같음) 값을 비교합니다. 그러나 이러한 연산자는 문자열을 비교하는 데 사용할 수 없습니다.

if-else 명령을 사용하여 큰따옴표가 포함된 문자열 비교

문자열 또는 변수에 큰따옴표가 포함된 경우 SetLocal 명령을 사용하여 지연된 확장을 활성화합니다. 사용 ! 대신에 ".

동일한 코드는 아래 예에 나와 있습니다.

@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

큰따옴표가 있는 그렇지 않은 경우 테스트파일 문자열

출력:

큰따옴표가 있는 문자열인 경우 출력

배치 파일에서 for 루프를 사용한 문자열 비교

for 명령은 파일 집합 내의 각 파일에 대해 지정된 명령을 실행하는 데 사용됩니다.

Batch 파일의 for 명령 구문이 표시됩니다.

for {%%|%}<variable> in (<set>) do <command> [<commandlineoptions>]

Windows OS 버전을 표시하기 위해 문자열을 비교해야 하는 예를 들어 보겠습니다.

@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

루프용 테스트파일

출력:

루프용 출력

위의 예에서 for 루프는 문자열 값을 비교하는 데 사용됩니다. 문자열 값이 HelloWorld와 같으면 출력이 match found로 표시됩니다.

delims는 구분 기호 집합을 지정하고 tokens는 각 줄에서 for 루프로 전달할 토큰을 지정합니다. usebackqfor 루프에서 따옴표를 사용할 때마다 사용해야 합니다.

따라서 Batch 파일에서 문자열을 비교하는 다양한 방법에 대해 논의했습니다. 문자열 비교 외에 이러한 조건부 명령을 사용하여 텍스트 파일이나 로그 파일에서 지정된 값이나 텍스트를 찾을 수도 있습니다.

관련 문장 - Batch String