강좌 / 팁

윈 도 우 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 - - -
4420 소프트웨어| pureBasic - FMIFS FormatEX 0.1.2 [6] 입니다 989 24 12-08
4419 기 타| [팁] 유튜브 광고 차단 [14] 천경지위 7978 28 12-03
4418 윈 도 우| sources 폴더 교체시 드라이버 로드 오류 참고 [14] 무월 1369 31 12-02
4417 소프트웨어| pureBasic 소스 - 실행 목록 및 화면 캡처 v0.2 [7] 입니다 976 29 12-01
4416 기 타| 짜증나는 유튭 광고 개인설정과 구글설정 [10] 트레져sn 4056 15 11-27
4415 소프트웨어| 한글2024 로고 교체 / 자동 설치 옵션 [54] 무월 13120 107 11-25
4414 소프트웨어| pureBasic 소스 - 전원 단추. PB 6.10 지원 [12] 입니다 1237 34 11-24
4413 소프트웨어| PCem Win98 인터넷 개통하기. [6] 메인보드 1342 6 11-23
4412 기 타| macOS 소노마 14.1.1 다운로드 및 부팅 ISO 제작 후 VMWare... [8] 무월 1809 16 11-22
4411 소프트웨어| 오토잇 시스템 종료&재부팅 소스 [15] 무월 1582 27 11-21
4410 윈 도 우| 최신 EEA 호환 업데이트에서 Windows 11에서 Microsoft Edg... [1] VᴇɴᴜꜱGɪ 893 3 11-20
4409 기 타| VMWare Workstation@Hybrid CPU 성능 문제 해결책 [3] DarknessAn 994 6 11-20
4408 소프트웨어| AutoCAD 캐드 설치가 안 될 때.... 한번해보세요.... 전 3... [6] Alpha 2494 11 11-17
4407 소프트웨어| PECMD CMPA 복호화 [13] sunshine 1373 25 11-15
4406 소프트웨어| Nsis 패킹 파일에서 .nsi 스크립트 추출하기 [7] sunshine 595 16 11-14
4405 소프트웨어| WinNTSetup 설정값을 저장하여 기본값으로 사용하기 [18] 무월 2221 43 11-06
4404 윈 도 우| 윈도우11 22h2 빌드 이상에서 구형 cpu 성능분배 버그 해결... [2] 내가와따ooo 5169 12 10-26
4403 윈 도 우| 배치파일을 이용해서 윈도우 자동 설치하기 [22] gooddew 4949 70 10-16
4402 윈 도 우| [실사] 단일 SSD(HDD)에서 윈도우 설치 하기! [20] 무월 3939 45 10-14
4401 소프트웨어| 크롬/엣지에서 URL 드래그 드롭으로 제목 얻기 (ver 0.2.3,... [14] 메리아 1273 21 10-13
XE1.11.6 Layout1.4.8