기본적으로 괄호 () 는 IF문 또는 FOR문을 사용할 때 C 언어에서의 중괄호 {} 와 동일한 형태로 사용한다.

하지만 괄호 () 를 C언어 사용하듯이 사용하면 에러를 만나게 된다.


1
2
3
4
5
6
7
8
9
10
11
 
:: 정상 코드
IF "%ERRORLEVEL%" == 0  ( 
    echo 0이면 true라는 소리이다.
)
 
::잘못된 코드
IF "%ERRORLEVEL%" == 0  ( 
    echo 0이면 ( true )라는 소리이다.
)
 


잘못된 코드에서 괄호를 사용했는데 ) 괄호를 만나면 IF문이 닫힙니다로 해석되어 에러를 뿜어낸다.

[ 에러은(는) 예상되지 않았습니다. ]


echo는 C언어에서 std::cout, std::printf와 유사한데 여기에서 어떤 문장을 집어 넣어도 "" 큰 따옴표가 방어 역할을 수행한다. 하지만 echo는 그렇지 못하므로 주의하여 사용해야 한다.

'Languages > DOS SHELL' 카테고리의 다른 글

[DOS SHELL] for 문  (0) 2015.09.21
[DOS SHELL] IF 문  (0) 2015.09.21
[DOS SHELL] goto 와 call의 차이점  (0) 2015.09.21
[DOS SHELL] Variable 선언 및 사용  (0) 2015.09.21


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
:: 문장을 파싱할 때 사용하는 방법
:: tokens는 몇번째 내용을 가져올 것인가를 지정하는 숫자이다. (1부터 시작)
:: delims는 어떤 기준으로 문장을 분리할 것인지에 대한 기준이다.
 
set sentence= aaa-bbb-ccc-ddd
FOR /F "tokens=2 delims=-" %%i in ("%sentence%") do echo token = %%i
 
 
 
:: 파일을 파싱할 때 사용하는 방법
:: usebackq는 FileName을 ( ' )작은 따옴표로 감싸면 문장으로 인식하고
:: ( " )큰 따옴표로 감싸면 파일로 인식하기 위한 옵션이다.
 
FOR /F "usebackq tokens=2 delims=-" %%i in ('%SentenceName%') do echo token = %%i
 
FOR /F "usebackq tokens=2 delims=-" %%i in ("%FileName%") do echo token = %%i
 
 
 
:: tokens를 여러 개 만들고자 할 때
:: delims로 나열된 파싱 단어들의 숫자를 지정해주면 i, j, k, l에 순서대로 전달된다.
 
set sentence= aaa-bbb-ccc-ddd
FOR /F "tokens=1,2,3,4 delims=-" %%i in ("%sentence%") do echo token = %%i, %%j, %%k, %%l
cs


for문을 사용할 때는 문장과 파일을 명확히 구분할 필요가 있다.
자세한 사용법은 CMD 실행하고 for /?로 살펴보기.


'Languages > DOS SHELL' 카테고리의 다른 글

[DOS SHELL] 괄호() 사용시 주의 사항  (0) 2015.10.21
[DOS SHELL] IF 문  (0) 2015.09.21
[DOS SHELL] goto 와 call의 차이점  (0) 2015.09.21
[DOS SHELL] Variable 선언 및 사용  (0) 2015.09.21
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
IF "%ERRORLEVEL%" == 0  ( 
    echo 0이면 true라는 소리이다.
)
IF "%ERRORLEVEL%" NEQ 0  ( 
    echo 0이 아니면 true라는 소리이다.
)
 
set name=FoxLime
IF "%name%" == "Foxlime" (
    echo 대소문자 구분하여 문자열을 비교한다.
)
IF  /i "%name%" == "Foxlime" (
    echo 대소문자 구분 없이 문자열을 비교한다.
)
 
IF "%rootPath%" == "C:\" (
    echo C:\ true.
) ELSE IF "%rootPath%" == "D:\" (
    echo D:\ true.
)
 
 
IF %UserLevel% == 1 IF %Character% > 2 (
    echo IF문에서 &&(and)를 표현하는 식이다.  
)
 
SET IsBool=false
IF %UserLevel% == 1 SET IsBool=true
IF %Character% > 2 SET IsBool=true
IF /i "IsBool" == "true" (
    echo IF문을 ||(or)를 표현하는 식이다.
)
 
cs


'Languages > DOS SHELL' 카테고리의 다른 글

[DOS SHELL] 괄호() 사용시 주의 사항  (0) 2015.10.21
[DOS SHELL] for 문  (0) 2015.09.21
[DOS SHELL] goto 와 call의 차이점  (0) 2015.09.21
[DOS SHELL] Variable 선언 및 사용  (0) 2015.09.21
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@echo off
 
:: call과 goto는 실행하는 동작이 다르다.
:: call은 :Test를 현재 위치로 불러와 처리하고 다음 라인 처리를 진행한다.
:: goto는 :Test 위치로 이동하여 처리한다.
 
call :Test
goto :Test
 
exit /b 0
 
:Test
echo you called Test
exit /b 0
cs



'Languages > DOS SHELL' 카테고리의 다른 글

[DOS SHELL] 괄호() 사용시 주의 사항  (0) 2015.10.21
[DOS SHELL] for 문  (0) 2015.09.21
[DOS SHELL] IF 문  (0) 2015.09.21
[DOS SHELL] Variable 선언 및 사용  (0) 2015.09.21
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SET CurrentPath=%CD%
 
:: 0의 위치부터 시작하여 3글자를 잘라 저장한다.
SET RootPath=%CD:0,3%
 
:: parameter
SET param0=%~0
SET param1=%~1
 
:: save file about paths
(
echo CurrentPath=%CurrentPath%
echo RootPath=%RootPath%
)>"path.dat"
 
 
cs


변수는 SET으로 선언되며 Value를 사용하려면 %로 감싸야 한다.


'Languages > DOS SHELL' 카테고리의 다른 글

[DOS SHELL] 괄호() 사용시 주의 사항  (0) 2015.10.21
[DOS SHELL] for 문  (0) 2015.09.21
[DOS SHELL] IF 문  (0) 2015.09.21
[DOS SHELL] goto 와 call의 차이점  (0) 2015.09.21

+ Recent posts