강좌 / 팁

윈 도 우 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 - - -
3460 소프트웨어| 레지스트리 하이브 파일 로드하기 [9] sunshine 2922 16 02-14
3459 윈 도 우| 네트워크로 연결된 컴퓨터 윈도우설치하기 [9] 굿듀님스토 3841 2 02-14
3458 서버 / IT| 동영상포털 광고 간단히스킵하기 ★ StopAd v190207 업데이트 [15] Star★Bros 3746 10 02-07
3457 서버 / IT| 크롬브라우저 플래쉬 항상 허용하기 ★★ [32] Star★Bros 4501 15 02-05
3456 기 타| 태극 마크님의 1클릭 BCD 토커 원클릭 버튼 설정 [9] 슈머슈마 2027 10 02-01
3455 소프트웨어| 1클릭으로 BCD 편집하기 [쉬운 모드, 전문가 모드] [9] 박삿갓 3319 7 01-31
3454 윈 도 우| 윈도우10 로그인화면 투명하게★ [15] Star★Bros 6524 14 01-29
3453 윈 도 우| Windows cmd용 sudo 와 su [11] Neutrino 4645 10 01-20
3452 하드웨어| [하드] 최신 리얼텍 오디오 드라이버 받는 방법(201901) [10] 깨블리 5712 16 01-11
3451 소프트웨어| 구형 Winpe 생성기로 RS5 빌드후 부팅하기 [17] sunshine 2792 14 01-08
3450 기 타| 애드가드(Adguard) 다음카카오TV 재생불가 필터 추가하세요. [24] 절제자 4709 20 01-04
» 윈 도 우| cmd 스크립트서 레이블명으로 드라이브 찾기 [1] Neutrino 1847 6 12-25
3448 모 바 일| [팁] 아이폰 배터리 교환 이번달로 마감 [12] asklee 2700 3 12-18
3447 소프트웨어| (추가)러시아 mini10PE 추가 수정 [19] sunshine 4712 11 12-17
3446 소프트웨어| command prompt 에서 메일 보내기 [5] shot4u 1192 4 12-17
3445 소프트웨어| 러시아 mini10PE 설정값 수정하기 [11] sunshine 1521 10 12-16
3444 모 바 일| 아드레날린 2019 에디션으로 게임스트리밍 하기 흑서서 1330 2 12-15
3443 윈 도 우| 러시아 mini10PE 장치관리자 한글표시 [10] sunshine 1806 11 12-15
3442 윈 도 우| Windows10 PE에서 다음 팟플레이 실행시 에러 해결방법 [6] 사랑맨 1722 8 12-09
3441 윈 도 우| (수정)러시아 mini10pe 한/영 및 볼륨 아이콘 표시 [19] sunshine 2854 12 12-09
XE1.11.6 Layout1.4.8