윈 8~10 에서 cmd.exe if문 설명오류가 있었네요.
2015.05.06 03:28
cmd 에서 if /?를 입력하고 두번째 페이지에는
대/소문자 구분 비교에 관한 문서가 나오는데
위에 대/소문자를 구분하려면 /i를 사용하십시요.
이게 틀렸습니다.ㅋㅋㅋ
실은 기본값이 대소문자 구분이고 /i를 쓰면 구분 안하는건데 버젓히 잘못 써있는게 윈 10마저도 그러네요.
다음과 같이 해보면 틀렸음을 알수 있습니다.
if A==a echo 맞다 //에코안됨.
if /i A==a echo 맞다 //에코됨.
댓글 [9]
-
suk 2015.05.06 03:54
-
빛과그림자 2015.05.06 04:12
XP부터였나 보네요.
아무튼 그거보고 한동안 식겁했으며 윈도까지 날릴뻔 했는데 10에서도 고치지 않았습니다..
-
suk 2015.05.06 04:25
근데 if exist 에서는 /i 옵션은 있으나마나 더군요. 둘다 대소문자 구분 없습니다.
if의 i 옵션 시작을 찾아서....;
win98에는 아직 i 옵션이 없네요. 이때는 cmd.exe도 아니고 comman.com이더군요. ms-dos라고..
이 정도만 하죠. 그러면 시초는 어디일지?
command.com 대신 cmd.exe가 시작된 윈도가 될 것 같네요?
cmd.exe는 윈도2000 부터 시작이라고 나오네요.
-
현규 2015.05.06 10:15
상속, 전통의 계승. ㅋㅋㅋ
...
정작 최종적으로 중요한, 파일명에서 대소문자 구별을 안하기에...그닥 의미 없다 생각했었는데요...
((구별해서 어쩌게??? M$에 하는 말입니다.)) -
DarknessAngel 2015.05.06 11:27
라고 말은 하지만 ntfs6에 대소문자 구분 지원 추가했죠 (리눅스등의 구분하는 OS로 부트후 ntfs인 파티션에 대소문자 다른 파일명 작성하면 한 경로에 같은 문자열로 파일 여러개 작성 가능합니다)
마소 애초에 대소문자 구분 제대로 처리할 맘 없어보입니다 (파일 처리만이 아니라 시스템의 핵심인 레지부터 구분 안 하니까요)
-
현규 2015.05.06 12:17
아~ 처음 알았네요, NTFS6.
근데 윈도우즈가 아니라 리눅스에서...또한, 하위호환성에 문제가...ㅋㅋㅋ
-
빛과그림자 2015.05.06 12:47
문제의 발단은 대소문자 구분이 없던 XP시절은 맞는데
이후 기능이 추가되었으나 여태 소스수정을 제대로 안하고 윈10까지도 그대로 간거네요.
-
DarknessAngel 2015.05.06 23:10
웃기는점이 기존 호환성을 이유로 파일 시스템은 지원해도 프로그램은 지원 안 하는 상태가 되어있습니다 (리눅스등에서 저장하면 아무 문제없이 개별처리 되는데, 윈도상에서 저장은 못함)
-
빛과그림자 2015.05.07 01:15
SMB 관련해서 그런거죠?
원조가 리눅스만 못할때가 가끔 있더라고요.
실속챙기기에 눈이 뻘개진건지 사용자 편익은 팽갸친지 오래라 사뭇 애플과 대비되는게 ㅠㅠ
win7부터 역사가 오래된 오류입니다. 비스타는 어떤지 모르겠네요. xp는 또?
"IF 뒤에 /i 를 붙이시면 대소문자를 구분하지 않습니다.
이게 윈도우에선 IF 도움말에 잘못 표기되어 있네요. /i를 붙이면 대소문자 구분이 없고, 안 붙이면 대소문자를 구분합니다.
도움말에는 반대로 나와 있습니다."
https://snoopybox.co.kr/1404
win7은 여전히 그대로 이네요. 몇년 지났기 때문에 수정 되었나 확인했더니..