강좌 / 팁

윈 도 우 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 - - -
4098 윈 도 우| 윈10 화면보호기 설정하는 2가지 방법 ( 배치파일로 설정... 코요88 1077 3 02-07
4097 소프트웨어| 한글 2020 제품키 자동 입력 및 업데이트 통합하기 [28] CraXicS 10877 44 02-06
4096 소프트웨어| GNU GRUB 2.0.6 을 이용한 OS 설치 및 부팅 저장매체 만들기 [9] 메인보드 2016 17 02-02
4095 윈 도 우| Clinic PE 크롬/웨일/엣지에서 확장앱 사용하기 [6] PC_Clinic 994 8 02-02
4094 윈 도 우| 폴더 잠금용 배치파일 : 사적인 폴더 숨기기 [11] 지후빠 1464 16 02-02
4093 소프트웨어| 일반 키보드를 매크로 키보드처럼 사용하기(feat.Autohotkey) [5] 미유키로즈 1420 3 02-02
4092 소프트웨어| Everything을 런처처럼 사용하기 (feat.Autohotkey) [5] 미유키로즈 1511 8 02-02
4091 윈 도 우| 로그오프시 "숨긴 항목 숨기기"로 자동 설정 [6] 지후빠 990 7 02-01
4090 윈 도 우| 탐색기에서 드라이브 숨기기 보이기 배치파일 [23] 지후빠 1885 21 01-30
4089 윈 도 우| 윈도우 설치전 데이터 손실방지 하기! [7] 무월 1658 21 01-29
4088 소프트웨어| wim 생성실패와 복구실패. 그리고 Wimlib_clc 사용에 대한 ... [2] heykevin 629 4 01-28
4087 소프트웨어| WinRAR 6.1은 Windows XP 지원을 중단하고 Windows 11의 상... [1] VᴇɴᴜꜱGɪ 1321 5 01-26
4086 윈 도 우| Clinic PE의 wim 파일 업데이트하기 [9] PC_Clinic 2124 21 01-23
4085 윈 도 우| 바탕화면 내컴퓨터 및 휴지통 아이콘 제거하기 [11] PC_Clinic 1276 6 01-23
4084 윈 도 우| Ventoy앞 Windows중 Linux끝 [10] 메인보드 1787 15 01-19
4083 윈 도 우| Ventoy앞 Linux 뒤 [4] 메인보드 703 8 01-19
4082 윈 도 우| 윈도우 11 작업표시줄 초단위 시계 표시하기 [3] KS22 3465 10 01-15
4081 기 타| 레인미터를 부팅하면 나오도록 등록했습니다. [12] 하늘은높고 2101 12 01-14
4080 소프트웨어| 일부 Firefox 사용자가 연결 문제를 보고함 (내부 해결 방법) [1] VᴇɴᴜꜱGɪ 585 2 01-14
4079 소프트웨어| 레인미터 날씨 스킨 풍속표시 시속(km/h)을 초속(m/sec)으... [5] 유기농7 1843 3 01-13
XE1.11.6 Layout1.4.8