윈 도 우 cmd 스크립트서 레이블명으로 드라이브 찾기
2018.12.25 15:43
cmd 스크립트를 작성하다보면 가끔 드라이브명을 가져와야할 경우가 있는데요
아마도 유동성이 있는 이동식 드라이브 볼륨명을 알고싶을때 일것이며 볼륨명 중복이 없으면 됩니다.
cmd는 bash와 달리 너무 거시기하여 함수처럼 작성해보았습니다.
코드 작성중 다음줄 부터
@echo off
goto :end-getdrive
:getdrive
setlocal enabledelayedexpansion
For %%a IN (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) DO (
if exist %%a: for /f "tokens=2 delims=:" %%b in ('vol %%a: ^|find "%*"') do (
if " %*"=="%%b" set /a conflict=conflict+1
set getdrive=%%a:
)
)
if !conflict! gtr 1 (echo !conflict! duplicate drive with %* volume label &endlocal &exit /b)
if !conflict! lss 1 (echo No found drive %* volume &endlocal &exit /b)
echo The drive for %* volume is !getdrive!
endlocal & set getdrive=%getdrive%
exit /b
:end-getdrive
여기까지를 넣은후 언제든
[call :getdrive 볼륨명 ] 식으로 호출하면 해당 볼륨의 드라이브를 %getdrive% 변수로 찾아옵니다..
이때 볼륨명을 현재 드라이브의 볼륨에서 추출하고자 한다면 메인블록 시작전 다음과 같이 글로벌 변수 HostVolume에 등록합니다.
이렇게 글로벌 변수에 타겟 볼륨명이 등록되었다면 항상 다음과 같이 사용할수 있습니다.
for /f "tokens=2 delims=:" %%a in ('vol %~D0 ^|find "드라이브"') do (setx /m HostVolume=%%a) //현재볼륨명을 전역변수에 등록
call :getdrive %HostVolume% // 이후부터 호출시 볼륨명 대신 전역변수 사용 (단 다음 부팅때부터 적용될수 있음)
이것으로 vhd 윈도에서 호스트 드라이브를 찾는데 쓰일수 있으며
찾은 드라이브를 반복적으로 쓰이기 위해서는 역시 setx vhdhost %getdrive% 처럼 할수 있는데
이러면 Path에 %%vhdhost%%\Portable 식의 문구를 추가하여 어떤 드라이브로 연결되든 오류없게 패스가 작동합니다.
※ 볼륨명은 영문자 기준 32자 가능하며 대소문자 구분되고 : 은 포함불가.
※ 볼륨명이 없으면 탐색기에는 "로컬 디스크"로 표시되나 값은 null 이므로 찾울 방법이 없다.
※ ODD포함 현제 존재하는 드라이브에 대해서만 찾기를 시도한다.
댓글 [1]
-
Neutrino 2019.02.09 19:26
번호 | 제목 | 글쓴이 | 조회 | 추천 | 등록일 |
---|---|---|---|---|---|
[공지] | 강좌 작성간 참고해주세요 | gooddew | - | - | - |
4400 | 윈 도 우| [실사] VHD 교차부팅 수동&자동 등록 [18] | 무월 | 1975 | 32 | 10-07 |
4399 | 소프트웨어| EDGE 브라우저 창 크기 "최대화" 고정 하기 [1] | 미스라 | 1482 | 6 | 10-03 |
4398 | 윈 도 우| [갱신] 윈도우 11 로컬 계정 암호 변경 [14] | 무월 | 2244 | 18 | 09-27 |
4397 | 소프트웨어| 테라카피(Teracopy) 3.12 설치팁 [7] | 메리아 | 2318 | 17 | 09-27 |
4396 | 소프트웨어| PDF-XChange Editor 기본글꼴 바꾸기 [1] | 코리아선비 | 890 | 3 | 09-25 |
4395 | 윈 도 우| Windows 11에서 광고 팝업을 끄는 방법 [5] | VᴇɴᴜꜱGɪ | 3100 | 8 | 09-22 |
4394 | 소프트웨어| [포토샵] 인물 누끼따기 외곽선 정리 [12] | 무월 | 2555 | 37 | 09-20 |
4393 | 윈 도 우| 윈도우 11 로컬 계정 암호 재설정 [15] | 무월 | 1778 | 29 | 09-18 |
4392 | 윈 도 우| 윈도우11 에서 창 깜박거림이나 입력글자가 사라지는 경우 [5] | Named | 1558 | 2 | 09-14 |
4391 | 소프트웨어| PE 동영상 썸네일 표시 [3] | 히이이잌 | 674 | 16 | 09-14 |
4390 | 모 바 일| [팁] 카톡 '전화번호로 친구 추가 허용' 기능 추가 [2] | asklee | 1597 | 4 | 09-13 |
4389 | 윈 도 우| Microsoft는 최근 Windows 11 WinRE 업데이트가 실패한 이... [2] | VᴇɴᴜꜱGɪ | 1497 | 4 | 09-10 |
4388 | 윈 도 우| 바로가기 아이콘을 만들어 원 클릭으로 디펜더 온 오프 메... [8] | heykevin | 1298 | 20 | 09-09 |
4387 | 소프트웨어| 64bit 프로그램 한글화 강좌 [4] | 夕影 | 1757 | 7 | 09-09 |
4386 | 소프트웨어| [엑셀] 선택된 셀, 행, 열 강조 하기! [13] | 무월 | 2561 | 28 | 08-31 |
4385 | 소프트웨어| Microsoft Edge를 사용하여 YouTube 스크린샷을 찍는 방법 [3] | Security_Z | 1347 | 5 | 08-30 |
4384 | 윈 도 우| [실사] 윈도우 11 VHD 교차부팅(자동) 설정 - VHDMan [16] | 무월 | 1952 | 35 | 08-26 |
4383 | 소프트웨어| Microsoft Edge IE모드 구성하기 [10] | 무월 | 1837 | 22 | 08-26 |
4382 | 윈 도 우| [3탄] PE빌드를 위한 누적 업데이트 통합 (Winre.wim + ins... [14] | 무월 | 1275 | 26 | 08-25 |
4381 | 윈 도 우| 텍스트 파일 하위 폴더 파일 포함 병합하기! [11] | 무월 | 820 | 27 | 08-23 |
모든 드라이브 볼륨명을 중복없이 유일하게 만드는게 난처한 환경이라면
대신 파티셔닝/포맷시 자동 생성되는 일련번호나 uuid를 얻어 사용할수도 있습니다.