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.
짬을 내서 한번 해봅니다. 지금 무언가를 복사중... 이어서.
시험끝날때까지 컴퓨터를 못합니다. 그러나 짬은 낼수 있으니 질문 등은 방명록에 올려주시거나 댓글로 남겨주세요.