it-swarm-tr.com

Windows Kabuğu (bat, cmd) aracılığıyla bir sistemdeki sürücü harflerinin listesi nasıl alınır?

Bir bat dosyası aracılığıyla bir Windows sisteminde sürücü harflerinin ve ilişkili etiketlerinin listesini nasıl alabilirim?

26
Chris Magnuson

Bu çoğunu alacak:

Net Use

Sub ile eşlenen sürücüleriniz varsa, bunları da almanız gerekir:

Subst

Tamlık için, Powershell'de böyle yaparsınız (Windows 7'de iseniz veya yüklediyseniz):

gwmi win32_LogicalDisk -filter DriveType=4

Bunu şu şekilde WMI kullanarak Sor komutundan veya bir toplu iş dosyasından da yapabilirsiniz:

wmic logicaldisk get caption,providername,drivetype,volumename
37
EBGreen

Diskpart'ı kullanmak için bir ara dosya oluşturmaya gerek yoktur. Deneyin:

echo list volume | diskpart
15
gnoise
@echo off
cls
setlocal enabledelayedexpansion
set "_DRIVE.LETTERS.FREE=Z Y X W V U T S R Q P O N M L K J I H G F E D C B A "
for /f "skip=1 tokens=1,2 delims=: " %%a in ('wmic logicaldisk get deviceid^,volumename') do (
   set "_DRIVE.LETTERS.USED=!_DRIVE.LETTERS.USED!%%a,%%[email protected]"
   set "_DRIVE.LETTERS.FREE=!_DRIVE.LETTERS.FREE:%%a =!"
)
set _DRIVE.LETTERS.USED=%_DRIVE.LETTERS.USED:~0,-2%
set _DRIVE.LETTERS.USED=%_DRIVE.LETTERS.USED:,@=, @%
set _DRIVE.LETTERS

Hızlı, esnek ve verimli. Her ne kadar biraz karmaşık.

10
Dharma Leonardi

scott'tan esinlenerek

for %i 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 @%i: 2>nul && set/pz=%i <nul

cD sürücüsü harfini de gösterir. Yönetici olmaya gerek yok.

7
Yuning
mountvol

örnek çıktı

\\?\Volume{11197e59-f977-11dd-afc6-111e6f6e6963}\
   *** NO MOUNTING POINT ***

\\?\Volume{11197e59-f977-11dd-afc6-111e6f6e6963}\
   D:\

\\?\Volume{11197e59-f977-11dd-afc6-111e6f6e6963}\
   C:\

\\?\Volume{11197e59-f977-11dd-afc6-111e6f6e6963}\
   E:\
5
Jader Dias

Birisi Vista (benim durumumda Vista Ultimate SP2 b6002) kullanmak için yeterince şanslıysa ve gwmi ve - wmic Burada verilen snippet'ler tam olarak çalışmıyor, işte bunu yapmak için yaptığım şey.

gwmi için çıktı almazsanız, DriveType'ı 3 olarak değiştirmeyi deneyin. Hala sorun yaşıyorsanız, -filter seçeneğini tamamen kaldırın ve çıktıyı analiz edin.

gwmi win32_LogicalDisk -filter DriveType=3

wmic için, "Geçersiz GET İfadesi" alırsanız, get ifadesini tırnak içine almayı deneyin:

wmic logicaldisk get "caption,providername,drivetype,volumename"
4
tdowg1
@echo off
echo list volume > scriptdiskpart
diskpart/s scriptdiskpart
del scriptdiskpart
pause
2
5d4gd

Bu site çok daha basit bir arama grubuna sahiptir:

http://en.code-bude.net/2013/02/23/show-all-drives-in-command-Prompt/

Yerel sürücüleri göster:

wmic mantıksal disk almak deviceid, volumename, açıklama


Yalnızca belirli bir türdeki sürücüleri göstermek istiyorsanız, wmic komutu where cümlesi içerecek şekilde genişletilebilir.

wmic logicaldisk burada drivetype = 2 get deviceid, hacim, açıklama

Türleri

0 => Bilinmiyor

1 => Kök Dizini Yok

2 => Çıkarılabilir Disk

3 => Yerel Disk

4 => Ağ Sürücüsü

5 => Kompakt Disk

6 => RAM Disk

2
David Tr
for %%p 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 %%p:\nul your_command_and_parameters_here
1
pbies
for %a in (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 @vol %a 2>&1 | find "drive"

Disk bölümü yaklaşımının disk takılı olmayan DVD sürücülerini rapor ettiğini ve geçerli sürücü birimlerine sahip SD kartları bildirmediğini buldum

1
Nick

Biraz kludgy, ancak bir toplu iş dosyasından çalışır:

echo LIST VOLUME > temp.txt && diskpart /s temp.txt && del /q temp.txt
0
Nexus

Yeterli cevabı olmasına rağmen, toplu iş dosyasında kullanmak istediğinizde bir tane eklemek istiyorum. "Geçersiz GET İfadesi" alırsanız, aşağıdaki gibi ',' önüne bir ^ koyabilirsiniz:

for /F "usebackq tokens=1,2,3,4 " %%i in (`wmic logicaldisk get caption^,providername^,drivetype^,volumename 2^>NUL`) do echo %%i %%l
0
Mingjiang Shi