윈 도 우 배치파일 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 | - | - |
52149 | 윈 도 우| vmware10에서 [1] | 이탈 | 916 | 10-08 |
52148 | 윈 도 우| 윈도우10 시작메뉴 폴더삭제법 질문 [4] | 양현진 | 2946 | 10-08 |
52147 | 소프트웨어| AutoCAD 2015 한글언어팩 적용방법? 조언 부탁드립니다.^^ [4] | 샤방이 | 5728 | 10-08 |
52146 | 윈 도 우| PE 최신버젼이 어떤건가요? [1] | 꿈꾸는개발 | 1477 | 10-08 |
52145 | 윈 도 우| [도움요청]삼성 SSD 840 시리즈-파티션이 날라 갔네요 [8] | 멤피시안 | 1274 | 10-08 |
52144 | 소프트웨어| 8pe 수정하는데, 한계를 느낍니다, 도와주세요. [1] | 그러비 | 1028 | 10-08 |
52143 | 윈 도 우| 윈도우10 업데이트 수동으로 설정하기 질문 [2] | 양현진 | 1556 | 10-08 |
52142 | 윈 도 우| win7 X64 에서 32bit internet explorer 사용 | 사랑니 | 987 | 10-08 |
52141 | 윈 도 우| 윈도우 7 라이트 버젼 좀 구하고 있는데요 [1] | 산소통 | 1311 | 10-08 |
52140 | 윈 도 우| Classic Shell에서 시작메뉴 목록을 작게 표현하려면? [1] | 노래하는다롱이 | 934 | 10-08 |
52139 | 윈 도 우| 오늘 윈도우 정기 업데이트 날아닌가요? [3] | 곰팅이푸우 | 1246 | 10-08 |
52138 | 소프트웨어| 1password ID 자동입력 방법 [4] | 벗나무 | 1674 | 10-08 |
52137 | 윈 도 우| 프로그램 제거 오류 질문있습니다..... [2] | 아임백 | 1204 | 10-07 |
52136 | 윈 도 우| 스크린 샷 하면 다운이 | 스노빌 | 873 | 10-07 |
52135 | 기 타| Windows 10 x64 bcdboot.exe 좀 올려주세요 [2] | DarknessAn | 1322 | 10-07 |
52134 | 소프트웨어| 마우스 오른쪽메뉴가 너무많아서 [4] | 불터스 | 1191 | 10-07 |
52133 | 기 타| 인터넷과 IPTV를 LG 유플러스로 바꾸는 거 어떨까요? [7] | 강한의지 | 1814 | 10-07 |
52132 | 윈 도 우| Wimboot 관련 초보질문 [3] | 운상아짜 | 933 | 10-07 |
52131 | 윈 도 우| 트루이미지 universal restore 사용방법 질문 드립니다. [4] | refreshair | 1310 | 10-07 |
52130 | 기 타| 인터넷통신사 좀 바꾸려고 하는데요. [2] | 빠져들어 | 1394 | 10-07 |
문자열 비교이기때문에... 따옴표(" ")로 묶어주세요...
set test1="파일목록(v1)(Link1)"
set test2="파일목록(v2)(Link2)"
1.cmd