배치 파일의 문자열 비교
문자열은 정렬된 문자 모음입니다.
문자열은 Batch 파일의 조건부 명령(예: if
, if-else
및 for
명령)을 사용하여 비교할 수 있습니다. 문자열에는 공백과 특수 문자가 포함될 수 있으므로 정상적인 실행 시 Batch 파일에 오류가 발생할 수 있습니다.
또한 문자열에 큰따옴표가 있으면 오류가 발생할 수 있습니다.
이 자습서에서는 if
, if-else
및 for
명령을 사용하여 Batch 파일에서 문자열을 비교하는 다양한 방법을 설명합니다.
배치 파일에서 if
및 if-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
출력:
메모:
- 괄호 사이에 공백을 두지 마십시오.
- 문자열이나 변수에 공백이나 특수 문자가 포함된 경우 큰따옴표로 묶습니다.
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
루프로 전달할 토큰을 지정합니다. usebackq
는 for
루프에서 따옴표를 사용할 때마다 사용해야 합니다.
따라서 Batch 파일에서 문자열을 비교하는 다양한 방법에 대해 논의했습니다. 문자열 비교 외에 이러한 조건부 명령을 사용하여 텍스트 파일이나 로그 파일에서 지정된 값이나 텍스트를 찾을 수도 있습니다.