본문 바로가기

카테고리 없음

cmd - set /a 연산에서 나머지 연산(%)에 대한 문제점

CMD 배치 파일을 만들어 자동화, 아니면 다른 용도의 프로그램을 제작할 때에 많은 사람들이 하는 착오가 있습니다. 그런 착오들은 CMD의 구조하고 관련이 되어있는데요,

 

지금 거론할 착오 한가지는 set /a=어쩌구%숫자 에 관한 내용입니다.

 

원래 보통 cmd 모드에서 set /a를 통해 변수 나머지 연산을 할 때에는

set /a=숫자%숫자

를 씁니다.

 

하지만 배치 파일에서는 이런 것이 안먹힙니다.

한번 보시죠.

전혀 뜨지를 않게 됩니다.

 

이 이유를 한번 보시죠.

 

CMD의 배치 파일 속에는 다음과 같은 특징이 있습니다.

 - 일반 모드와 달리 %1, %2 등의 변수는 명령줄 문자로 대치시킨다.

    ex)text.bat 1을 했을 경우, %1은 1이 된다.

 - %를 실제 명령에 인식시키기 위해서는 %%라는 문자열이 필요하다.

    ex)echo %를 실행시켜 %가 나오게 하기 위해서는 echo %%를 입력해야 한다.

 - set /a 등의 계산 명령줄에서 "(큰따옴표) 또는 '(작은따옴표)가 양쪽 끝에 붙어있을 시, 따옴표를 제외한 문자열로 인식한다. (일부 명령문)

   ex) set /a b="%random%"를 실행하면 %b%, 즉 b라는 변수에는 %random%값이 들어간다.

 

이제 맨 위의 이미지에 나타난 set /a b=%random%%4를 정상적으로 실행시켜보겠습니다.

 

이 명령문이 정상적으로 실행되기 위해서는 아래의 명령문이 필요합니다.

원래 명령문

set /a b=숫자%숫자

필요한 명령문

set /a b=숫자%%"숫자"

 

이상입니다.

ps.

짬을 내서 한번 해봅니다. 지금 무언가를 복사중... 이어서.

시험끝날때까지 컴퓨터를 못합니다. 그러나 짬은 낼수 있으니 질문 등은 방명록에 올려주시거나 댓글로 남겨주세요.