윈 도 우 배치파일 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 | - | - |
51885 | 소프트웨어| Unlocker Portable 우클릭 레지에 등록이 안됨 | 비숍 | 1116 | 09-25 |
51884 | 하드웨어| 노트북 무선랜 업글 관련 문의좀 드립니다.. [6] | Jeonv1004 | 1333 | 09-25 |
51883 | 윈 도 우| PE 를 VHD 로 부팅 할 때 [2] | 박삿갓 | 1087 | 09-24 |
51882 | 윈 도 우| 윈도우 8.1에서 바탕화면에 생성된 아이콘순서 바꾸기가 안... [6] | 데자니어 | 1743 | 09-24 |
51881 | 윈 도 우| 이 망고의 궁금한 점 질문 드립니다.. [2] | 꾸비 | 1048 | 09-24 |
51880 | 윈 도 우| 부팅관련 문의좀 드리겠습니다. [2] | 아이템 | 875 | 09-24 |
51879 | 소프트웨어| 하드디스크 복구프로그램 어떤게 좋나요? [10] | 뒤로가기 | 1375 | 09-24 |
51878 | 윈 도 우| 제가요./. [1] | 별마 | 846 | 09-24 |
51877 | 서버 / IT| tnsname.ora 다룰줄 아시는분 봐주십시요 ㅠㅠ [3] | 어우복구머 | 1764 | 09-24 |
» | 윈 도 우| 배치파일 if ~ else 문에서 변수지정 [6] | 우리집 | 1405 | 09-24 |
51875 | 윈 도 우| 인터넷 익스플로러가 백그라운드에 남는 이유가 뭘까요? [2] | 원초아 | 1736 | 09-24 |
51874 | 소프트웨어| WinClon5프리미엄...백업 복원 질문요 [1] | 뷰티뚱쓰 | 1158 | 09-24 |
51873 | 하드웨어| 불량섹터가 떴는데, 계속 써도 될까요? [5] | 트루스토리 | 1216 | 09-24 |
51872 | 윈 도 우| 윈도우7 "m" 타이핑 시 공백 출현 | 앙리 | 1110 | 09-24 |
51871 | 윈 도 우| vhd 윈7 프로페셔널 관련 질문입니다. [1] | 두잉 | 944 | 09-24 |
51870 | 윈 도 우| 로고 어떻게 바꿀수 있나요?? [2] | 꾸비 | 1061 | 09-24 |
51869 | 윈 도 우| win8.1 프리징 현상 [3] | adv | 1687 | 09-24 |
51868 | 하드웨어| 메모리 선택(제품) [1] | 개골동자 | 1007 | 09-24 |
51867 | 윈 도 우| 윈8.1 no트윅, 오른쪽마우스 no레지 버전찾아요 [3] | 어사또 | 1077 | 09-23 |
51866 | 윈 도 우| 윈도7 CMD 인식 어떻게해야하나요 [2] | 노털도사 | 1125 | 09-23 |
문자열 비교이기때문에... 따옴표(" ")로 묶어주세요...
set test1="파일목록(v1)(Link1)"
set test2="파일목록(v2)(Link2)"
1.cmd