강좌 / 팁

윈 도 우 cmd 스크립트서 레이블명으로 드라이브 찾기

2018.12.25 15:43

Neutrino 조회:1847 추천:6

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포함 현제 존재하는 드라이브에 대해서만 찾기를 시도한다.

 

번호 제목 글쓴이 조회 추천 등록일
[공지] 강좌 작성간 참고해주세요 gooddew - - -
4483 호환이 안된다는 드라이버 강제로 적용하는 방법 [1] ASUS 13190 0 10-13
4482 ASUS,LG....자동인증 씨디 만들기 [4] 왕대인 14834 0 10-13
4481 구매시 XP가 기본 장착된 모델인 경우 개조안하고 VISTA O... [5] 오다가다 9790 0 10-13
4480 구매시 XP가 기본 장착된 모델인 경우 VISTA OEM으로 [6] 오다가다 11454 0 10-13
4479 기 타| 종이로 시디케이스 만들기(두가지) [5] gooddew 11681 0 10-14
4478 VISTA의 BCDEDIT로 간단히 XP 멀티부팅정보 추가하기 [1] 오다가다 11482 0 10-16
4477 미디어플레이어 64비트 설정 방법 [4] 히로 10667 0 10-18
4476 탐색기에서 파일이동 복사하기 메뉴만들기 [2] gg 10217 0 10-27
4475 윈도탐색기에서 보기옵션 고정하기 [3] gg 10374 0 10-27
4474 Xp 가 탑제된 컴의 Vista 인증원리 [2] 오다가다 12288 0 10-27
4473 [Vista] 레디부스트 지원 안되는 USB 사용방법!? [5] 김용환 11108 0 10-30
4472 비스타 RC 버전 인증기 [4] 묵은지 12086 0 10-31
4471 ReadyBoost, Qsoft의 RamDisk로 "체험"하기 [1] 박정환 13853 0 11-04
4470 즐겨찾기 목록 폴더 자동 원상복구 [1] 퍼온이 10367 0 11-04
4469 지포스 최신 드라이버 설치시 카트라이더 문제점 해결.. [1] 미스터하하 9586 0 11-13
4468 기 타| JRSKD24.SYS 손상에 의한 부팅불가시 복구법..!! [4] gooddew 13987 0 11-14
4467 기 타| 비스타 버전별 기능 [6] gooddew 10130 0 11-17
4466 비스타 서팩1 설치 안될때의 설치방법 제안! [5] 테스트맨 9400 0 11-17
4465 sp1 rc v658 삭제 [4] 미스터하하 7947 0 11-18
4464 비스타 SP1 v658설치 [4] 비스타유져 8848 0 11-18
XE1.11.6 Layout1.4.8