윈 도 우 배치파일 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 | - | - |
51912 | 윈 도 우| ATI 그래픽 카드 장착 상태에서 윈8 토큰백업 해두었는데.... [4] | 타임머신 | 952 | 09-26 |
51911 | 기 타| 포터블 μTorrentPlus 3.4.2 업데이트후 연결문제 [5] | 꼬마 | 1106 | 09-26 |
51910 | 윈 도 우| 외장하드가 오프라인으로 바뀌는 이유가 뭔가요? [1] | 알키온 | 1241 | 09-26 |
51909 | 소프트웨어| 자바관련 질문 [3] | 별마 | 944 | 09-26 |
51908 | 소프트웨어| 아크로니스 트루이미지 관련 문의 [4] | 하회탈 | 1140 | 09-26 |
51907 | 하드웨어| 뜬금없는 FDD 질문입니다. [1] | 고도리뿅망 | 1013 | 09-26 |
51906 | 윈 도 우| 가상메모리 설정에서 USB메모리가 인식이 안됩니다. [1] | 야아옹 | 1172 | 09-26 |
51905 | 윈 도 우| 부팅 때마다 고정IP가 풀려버립니다. [2] | 원고지 | 1255 | 09-26 |
51904 | 소프트웨어| 자바 물어볼것이 있어서 질문남깁니다. [1] | 별마 | 900 | 09-26 |
51903 | 기 타| 마이크로 sd 카드 포맷이 안되요 [8] | 어느날갑자기 | 4748 | 09-25 |
51902 | 윈 도 우| Win9 프리뷰버전 받으신분? [1] | 별마 | 1401 | 09-25 |
51901 | 윈 도 우| 캡쳐 좀 봐주세여 [7] | 샤넬 | 1041 | 09-25 |
51900 | 소프트웨어| 동영상 편집 프로그램 부탁드립니다. [5] | 버들도령 | 1871 | 09-25 |
51899 | 소프트웨어| Photoshop CC 2014 15.2 시작시 팝업창 제거방법 [4] | DuDu | 1837 | 09-25 |
51898 | 소프트웨어| 비주얼 베이직과 닷넷 프레임워크 그리고 윈도우PE [2] | Stileto | 1177 | 09-25 |
51897 | 윈 도 우| 파일 공유(SMB)와 관련된 서비스가 무엇무엇이 있나요? [1] | 어우복구머 | 903 | 09-25 |
51896 | 하드웨어| 노트북 i5 3세대와 4세대의 성능차이 좀... [5] | 해피투게더 | 2786 | 09-25 |
51895 | 윈 도 우| VHDMAN 을 이용한 ESD로 설치시에 [5] | 여덟번째뱀 | 1044 | 09-25 |
51894 | 기 타| 제가요,,,,,,,,,,,,,,,, [1] | ㄷㄱ | 888 | 09-25 |
51893 | 하드웨어| 구형 사운드 카드가 있는데요.. [8] | 월장 | 1232 | 09-25 |
문자열 비교이기때문에... 따옴표(" ")로 묶어주세요...
set test1="파일목록(v1)(Link1)"
set test2="파일목록(v2)(Link2)"
1.cmd