윈 도 우 배치파일 if ~ else 문에서 변수지정
2014.09.24 15:04
@echo off
set menu=abc
set test1=파일목록(v1)(Link1)
set test2=파일목록(v2)(Link2)
echo menu===%menu%
echo test1===%test1%
echo test2===%test2%
pause
::에러남---------------------
if /i "%menu%" == "abc" (
set final_menu=%test1%
) else (
set final_menu=%test2%
)
::에러남---end------------------
echo 최종메뉴: %final_menu%
pause
exit
===========================================================================
위 구문처럼 변수 test1 , test2 에 괄호가 존재하면 에러가 납니다.
사실 변수 test1 , test2 은 괄호가포함된 파일명 입니다.
if 문에서 괄호가포함된 변수가 에러가 난다면 문제가 될것 같습니다.
지금까지 if 문에서 변수처리하면서 에러 발생한 것을 경험한 적이 없었는데
무엇이 잘못된 것일까요?
댓글 [6]
-
홍차의꿈 2014.09.24 15:12 -
우리집 2014.09.24 15:41
홍차의꿈님께서 답변을... 포럼에서 글을 자주 보았던걸로 기억합니다.
이 변수값을 다른곳에서 사용하기에 " " 지정을 하면 안되는데요.
좀 설명하자면 복잡한데요.
for ~~~ (
if ~~~ (
)
)
위문장 에서는 괄호가 포함된 변수도 " "없이 정상적으로 변수처리가 됩니다.
-
홍차의꿈 2014.09.24 16:32 -
우리집 2014.09.24 17:22
고맙습니다. 홍차의꿈님
다른 여러가지 방법이 있긴한데 지금까지 위와 같은 방법(에러 유발 가능성 있는 방법)으로 모든 배치파일을
작성해서 정상적으로 사용해 왔습니다. 아마도 변수에 괄호가 없었던 모양이지요(?).
위와 같이 괄호 변수에 문제가 있다면 언제 어디서 문제가 발생할지 모르겠네요.
그런데 이건 참 문제네요. 배치파일 문법이 간간히 문제가 있다 하지만 이게 정말 오류라면...허참
하도 이상해서 지금도 뒤적거리고 있습니다.
감사합니다.
-
사랑인 2014.09.24 17:47
if /i "%menu%" == "abc" (
set "final_menu=%test1%"
) else (
set "final_menu=%test2%"
)저기 따옴표는 "이 변수값을 다른곳에서 사용하기에 " " 지정을 하면 안되는데요."와 상관없습니다.
전 set설정에 항상 저걸 기본으로 사용합니다.
-
우리집 2014.09.24 18:14
사랑인님 고맙습니다.
변수지정시 이런 방법이 있었군요.
지금 해보니 오류없이 잘 됩니다.
기존 배치 set 명령구문을 모두 수정해야겠군요.
해결되서 너무 기쁨니다.
감사드려요. 사랑인님!
번호 | 제목 | 글쓴이 | 조회 | 등록일 |
---|---|---|---|---|
[공지] | 질문과 답변 게시판 이용간 유의사항 | gooddew | - | - |
51895 | 윈 도 우| 파일 공유(SMB)와 관련된 서비스가 무엇무엇이 있나요? [1] | 어우복구머 | 934 | 09-25 |
51894 | 하드웨어| 노트북 i5 3세대와 4세대의 성능차이 좀... [5] | 해피투게더 | 2817 | 09-25 |
51893 | 윈 도 우| VHDMAN 을 이용한 ESD로 설치시에 [5] | 여덟번째뱀 | 1068 | 09-25 |
51892 | 기 타| 제가요,,,,,,,,,,,,,,,, [1] | ㄷㄱ | 906 | 09-25 |
51891 | 하드웨어| 구형 사운드 카드가 있는데요.. [8] | 월장 | 1258 | 09-25 |
51890 | 소프트웨어| 재질문 PE 질문입니다. PE 파일을 iso로 만들려고 하는데 ... [5] | 하하히 | 1085 | 09-25 |
51889 | 소프트웨어| PE 질문입니다. PE 파일을 iso로 만들려고 하는데 울트라is... | 하하히 | 974 | 09-25 |
51888 | 하드웨어| 중소기업제품은 왜 불량화소가 많은지요? [6] | joe | 1343 | 09-25 |
51887 | 윈 도 우| 배치파일 Echo 명령과 출력 리다이렉션(>, >>) [7] | 우리집 | 1897 | 09-25 |
51886 | 윈 도 우| 윈도우비스타에서는 "내컴퓨터" -->"속... | 칼슘 | 1296 | 09-25 |
51885 | 하드웨어| 손에 촥 감기는 마우스 추천해주세요. [3] | toto | 1076 | 09-25 |
51884 | 윈 도 우| 태블릿PC에서 사용 할 단축키 런처 프로그램 같은게 있을까요? [3] | NineHeart | 1203 | 09-25 |
51883 | 소프트웨어| Unlocker Portable 우클릭 레지에 등록이 안됨 | 비숍 | 1116 | 09-25 |
51882 | 하드웨어| 노트북 무선랜 업글 관련 문의좀 드립니다.. [6] | Jeonv1004 | 1333 | 09-25 |
51881 | 윈 도 우| PE 를 VHD 로 부팅 할 때 [2] | 박삿갓 | 1087 | 09-24 |
51880 | 윈 도 우| 윈도우 8.1에서 바탕화면에 생성된 아이콘순서 바꾸기가 안... [6] | 데자니어 | 1743 | 09-24 |
51879 | 윈 도 우| 이 망고의 궁금한 점 질문 드립니다.. [2] | 꾸비 | 1048 | 09-24 |
51878 | 윈 도 우| 부팅관련 문의좀 드리겠습니다. [2] | 아이템 | 876 | 09-24 |
51877 | 소프트웨어| 하드디스크 복구프로그램 어떤게 좋나요? [11] | 뒤로가기 | 1375 | 09-24 |
51876 | 윈 도 우| 제가요./. [1] | 별마 | 846 | 09-24 |
문자열 비교이기때문에... 따옴표(" ")로 묶어주세요...
set test1="파일목록(v1)(Link1)"
set test2="파일목록(v2)(Link2)"
1.cmd