강좌 / 팁

윈 도 우 cmd 관리자 권한 실행과 특수문자 경로 문제

2024.02.14 14:58

메리아 조회:1100 추천:12

 

몇주전에 vbs를 써서 혹은 기타 방법으로

cmd파일을 관리자권한 실행하는 방법이 올라왔었는데

왜인지 그 글이 삭제된거 같군요. 아마도 자삭하신듯한데...

 

아무튼 제가 거기 댓글에서

"일부 특수문자 경로 처리 문제"에 대해서 언급했었습니다만

그것도 같이 날아가버렸기에 경로 문제에 대해 참고하시라고 다시 올려봅니다.

(참고로 유니코드 폴더,파일명 처리는 아닙니다. cmd창에서 그거까지 가면 더 복잡해짐...

대상파일,경로가 유니코드인 경우에는 진짜 파워셸이나 vbs로 꾸미는게 좋음. )

 

 

써놨던 내용이 가물가물해서 대충 기억나는대로 간단히 설명하자면

1. ! % ^ & ( ) <- 이 문자들이 폴더,파일명에 들어가면 echo표시, cd나 실행, 스크립트 중단 발생가능

   (참고로 폴더,파일명 가능한 문자들이며, 기타 폴더,파일명 불가능한 문자들은 제외하고 따진것)

2. 일부는 echo 표시할때만, 일부는 cd나 실행시, 일부는 아예 스크립트가 문법오류로 중단됨.

3. 관리자 권한 실행시 c:\windows\system32로 자동 이동되는데, %~dp0 등으로 경로 바꿀때 위 문자가 들어간건 일부 에러남.

   (^ &의 경우는 우클릭-관리자 권한 실행 자체가 아예 불가함. 이건 기본적인 cmd구조에 따른 도스/윈도우 자체적인 결함이라 해결 못함.

    실행자체를 좌클릭으로 해서 관리자권한을 코드상에서 획득해야함)

4. for문, if문 쓸때 ( ) 로 묶게되는데, 이것과 경로의 ( ) 가 충돌 일으키기 쉬움.

   내부에서 느낌표 ! 를 이용해서 % 대신 변수를 써야하는데

   변수에 들어가는게 느낌표 일때 말고는 엔간하면 통상적인 방법대로도 됨.(위에서 언급한 것 중 느낌표 빼고 나머지)

   느낌표가 들어가는 경우 

   setlocal DisableDelayedExpansion

   setlocal EnableDelayedExpansion

   이런걸 조합해야하는데, 복잡해지기에 꼭 필요한지 여부를 잘 따져야함.

   괄호가 들어간 변수는 케바케 오류나고, 괄호를 "직접 쓰는" 경우에 주의하지 않으면 문제가 생김. (폴더파일명 말고도 직접 쓰는 경우)

5. 변수보다도 수동으로 직접 경로를 입력하는 경우가 문제가 생기기 쉬움.

 

쓰려는 cmd파일이 불특정 다수 경로나 파일명 대상이 아니라면 대개 무시해도 됩니다.

그리고 복잡하니까 그냥 모른척해도 상관이 없을수는 있으나

적어도 문제가 되는 문자가 있는걸 유념해두고 문제 생겼을때 확인은 할 수 있어야합니다.

맞게 된 배치파일 코드인데 정상적으로 동작 안되고 왜 문제인지 모르겠다면

 

   ! % ^ & ( )

(느낌표, 퍼센트, 삿갓(캐럿), 앰퍼샌드, 괄호 5가지)

 

폴더,파일명에서 이 문자들이 오류를 일으켰을 수 있으므로 경로와 파일명에서 한번쯤은 더 확인해보는 것이 좋습니다.

차라리 직접 타이핑해서 넣는 경우는 눈에 띄는데, 폴더 파일명이 호출되니까 눈에 안띄어서 모르기 쉽죠.

(다만 유니코드 파일명이 문제일수도 있으므로 그 경우 의심되는 폴더,파일명을 메모장을 열고 복붙하고 txt 파일 ANSI로 저장해 보면 오류 표시가 뜰겁니다)

(보통 유니코드까지 커버하려면 cmd창 자체를 cmd /u 로 실행해야 해결됨)

 

 

제가 테스트해 본 자료입니다.

 

_관리자권한 테스트8 공개용_폴더수정.rar

_특수문자 경로표시 테스트.rar

 

자기가 쓰는 파일이 잘되는지 하위 폴더등에 넣고 실험해보실수도 있습니다.

 

 

 

참고로

cmd 파일을 보면

::#region ~~~

::#endregion ~~~

이런 문구가 많은데,

이건 VScode 쓸때 code folding 중 하나로 region을 접는 구문입니다.

자주 안봐도 되는 복잡한 내용이 들어갈때 접는 용도죠.

 

이걸 한꺼번에 접는 단축키는 Ctrl+K, Ctrl+8 을 이어서 입력하면됩니다.

VScode말고도 되는지는 모르겠습니다.

(메모장에선 당연히 안됩니다. ㅠㅠ)

 

번호 제목 글쓴이 조회 추천 등록일
[공지] 강좌 작성간 참고해주세요 gooddew - - -
1968 윈 도 우| Windows 업데이트를 사용하여 데이터를 잃지 않고 Windows ... [6] update VᴇɴᴜꜱGɪ 1209 6 04-23
1967 윈 도 우| WindowsXPE147-1빌더/나만의 PE를 만들자 시즌2 ?? 1탄 (... [59] 지연서연아 2013 68 04-16
1966 윈 도 우| 윈도우 계정/자동로그인 버그 해결 방법 사가르마타 776 0 04-12
1965 윈 도 우| 원격 데스크톱..., 자격증명이 작동하지 않습니다... [1] 사가르마타 318 1 04-12
1964 윈 도 우| SSD 에서 파일 삭제를 주의해야 되는 이유 [3] gooddew 2255 12 04-10
1963 윈 도 우| 특정 폴더목록 자동열기 배치파일 [2] 메리아 713 13 04-09
1962 윈 도 우| 하드 디스크 아이콘 바꾸기 [11] 타천사둘리 1322 8 04-08
1961 윈 도 우| [uupdump] 윈도우 업데이트 및 드라이버(IRST&NVMe) 통... [17] 무월 2206 34 03-27
1960 윈 도 우| (수정5) 윈도우 버전구분 배치파일 [4] 메리아 1207 14 03-23
1959 윈 도 우| 윈도우11&10 앱 제거 무인설치 [16] 무월 1712 29 03-22
1958 윈 도 우| Windows 11에서 Android를 웹캠으로 사용하는 방법 VᴇɴᴜꜱGɪ 1103 6 03-16
1957 윈 도 우| 22621.3296 22631.3296 업데이트 주의. [9] 타천사둘리 2221 12 03-14
1956 윈 도 우| 시스템 보호 설정 우클릭 메뉴 [13] 와로 1322 27 03-04
1955 윈 도 우| DISM 나의 윈도우 문제점 복구 [8] 마로94 1385 13 02-28
1954 윈 도 우| 윈도우 장치 드라이버 추출(백업) 명령어 [25] 컨피그 2713 64 02-23
1953 윈 도 우| 이 번 업데이트로 엣지에 추가된 사이드바 버튼 제거 [7] 고고추 2172 9 02-16
» 윈 도 우| cmd 관리자 권한 실행과 특수문자 경로 문제 [9] 메리아 1100 12 02-14
1951 윈 도 우| 측면 버튼에 등록된 돋보기 기능... 기본값으로 복원 [2] 사가르마타 1058 0 02-10
1950 윈 도 우| 윈11 탐색기 메뉴삭제 [5] 진실 2431 19 02-06
1949 윈 도 우| 윈도우 탐색기 갤러리 안보이게 하는 방법 [1] 사가르마타 1587 2 02-05
XE1.11.6 Layout1.4.8