Bir sistemdeki sürücü harflerini bir windows kabuğu (yarasa, cmd) ile nasıl bulabilirim?


Yanıtlar:


36

Bu çoğunu alacak:

Net Use

Subst ile eşlenmiş herhangi bir sürücünüz varsa, aşağıdakileri de almanız gerekir:

Subst

Tamamlanması için, bunu Powershell'de böyle yaparsınız (eğer Windows 7'deysanız veya kurduysanız):

gwmi win32_LogicalDisk -filter DriveType=4

Komut isteminden veya bir toplu iş dosyasından WMI kullanarak aşağıdaki gibi yapabilirsiniz:

wmic logicaldisk get caption,providername,drivetype,volumename

1
Bu, herhangi bir dahili sabit sürücü veya cdrom gibi yerel disk sürücülerini listelemez. Bir şey mi eksik?
Chris Magnuson,

Hayır, soruyu yanlış anladım. Sadece haritalanmış sürücüler istediğini sanıyordum. Düzenleyeceğim.
EBGreen

2
Wmic çözümü size her şeyi vermeli.
EBGreen

Wmic logicaldisk'in tırnak işaretlerini kaldırmanız gerekir "caption, sağlayıcı adı, drivetype" böylece wmic logicaldisk'in resim yazısı alması, sağlayıcı adı, drivetype bir hata atar. EBGreen, tek başıma günlerce aklımı başımdan aldın, haftalardır çeşitli sunucu yapıları yazıyor olmama rağmen wmic'i hiç görmedim ve bununla başka ne yapabileceğimi görmek için çok heyecanlıyım. İyi iş!
Chris Magnuson,

1
wmic mantıksaldisk resim yazısı, sağlayıcı adı, drivetype, volumename, VolumeName eksiktiğim şeydi, eğer sizinkini güncellerseniz cevap olarak kabul edeceğim. Teşekkürler
Chris Magnuson,

15

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

echo list volume | diskpart

2
Bu en iyi cevaptır ve takılan sürücüler hakkındaki en fazla bilgiyi güzel bir biçimde döndürür.
ekerner

ancak yönetici hakları gerektirir
LogicDaemon

9
@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,%%b@"
   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. Biraz karmaşık olmasına rağmen.


Bunun hangi Windows sürümlerinde çalıştığını bilmiyorum ama sadece Win 7 ve XP makinelerimde test ettim ve her ikisinden de aşağıdaki çıktıyı aldım: `DRIVE LETTER (s): USED:" = "DRIVE LETTER (s): ÜCRETSİZ: "! TMP_FREE_DRIVE_LETTERS!" `
John

Üzgünüz, bunu toplu iş dosyasının başına koymanız gerekir. setlocal enabledelayedexpansion
Dharma Leonardi

Cevabınızı, eksik satırı içerecek şekilde düzenledim. Şuan çalışıyor. +1
John Gardeniers 12:11

7

Scott'tan ilham alındı

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

ayrıca CD sürücü harfini gösterir. yönetici olmaya gerek yok.


basit ve çalışır
Tyler Long

"Bu zamanda beklenmedik oldu."
Berit Larsen

@BeritLarsen komut satırı yerine toplu iş dosyası olarak çalıştırıyorsa% sembollerini ikiye katlamanız gerekir.
MozaiklerHeckler

5
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:\

4

Herkes Eğer şanslı yeterli (benim durumumda, Vista Ultimate SP2 b6002) Vista kullanıyor ve gwmi ve wmic burada tam olarak çalışmıyor Burada verilen parçacıkları Ben çalışması için bunu yaptı.

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

İçin wmic "Geçersiz GET İfade" alırsanız, o zaman koymayı deneyin olsun tırnak içinde ifade:

wmic logicaldisk get "caption,providername,drivetype,volumename"

2

Bu site daha basit bir çağrı setine sahiptir:

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

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

wmic mantıksaldisk cihaza ulaşın, volumename, tanım


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

wmic logicaldisk burada drivetype = 2 deviceid, volumename, açıklama alır

Türleri

0 => Bilinmeyen

1 => Kök Dizini Yok

2 => Çıkarılabilir Disk

3 => Yerel Disk

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

5 => Kompakt Disk

6 => RAM Diski


2
@echo off
echo list volume > scriptdiskpart
diskpart/s scriptdiskpart
del scriptdiskpart
pause

Bunu denedim ve işe yaramadı. Sanırım / lerin önünde bir boşluk olması gerekiyor ama bu değişiklikle bile işe yaramadı. Yukarıdakileri bir dosyaya koydum, d.bat ve diskpart penceresinin yanıp söndüğünü görüyorum ama sonra kayboluyor ve çalıştığım cmd kabuğu sonra çalışanı duraklatıyor.
slm

1
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"

Diskpart yaklaşımı, diskleri takılı olmayan DVD sürücüleri rapor ediyor ve geçerli sürücü hacimlerine sahip SD kartlar rapor etmiyor


windows xp için çalışmıyor
Tyler Long

1
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

0

Biraz ağır, ama bir toplu iş dosyasından çalışıyor:

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

0

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, '' dan önce 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

Bunun ^burada ne işi var?
vonbrand

Bu, cmd.exe'nin kaçış karakteridir; Unix'te kabukları gibi \.
gimpf

-1
@ECHO OFF
IF NOT EXIST A: GOTO B
:A
VOL A:
:B
IF NOT EXIST B: GOTO C
VOL B:
:C
IF NOT EXIST C: GOTO D
VOL C:
:D
IF NOT EXIST D: GOTO E
VOL D:
:E
IF NOT EXIST E: GOTO F
VOL E:
:F
IF NOT EXIST F: GOTO G
VOL F:
:G
IF NOT EXIST G: GOTO H
VOL G:
:H
IF NOT EXIST H: GOTO I
VOL H:
:I
IF NOT EXIST I: GOTO J
VOL I:
:J
IF NOT EXIST J: GOTO K
VOL J:
:K
IF NOT EXIST K: GOTO L
VOL K:
:L
IF NOT EXIST L: GOTO M
VOL L:
:M
IF NOT EXIST M: GOTO N
VOL M:
:N
IF NOT EXIST N: GOTO O
VOL N:
:O
IF NOT EXIST O: GOTO P
VOL O:
:P
IF NOT EXIST P: GOTO Q
VOL P:
:Q
IF NOT EXIST Q: GOTO R
VOL Q:
:R
IF NOT EXIST R: GOTO S
VOL R:
:S
IF NOT EXIST S: GOTO T
VOL S:
:T
IF NOT EXIST T: GOTO U
VOL T:
:U
IF NOT EXIST U: GOTO V
VOL U:
:V
IF NOT EXIST V: GOTO W
VOL V:
:W
IF NOT EXIST w: GOTO X
VOL W:
:X
IF NOT EXIST X: GOTO Y
VOL X:
:Y
IF NOT EXIST Y: GOTO Z
VOL Y:
:Z
IF NOT EXIST Z: GOTO END
VOL Z:
:END

Vay canına. Bu nedenle, bunu, sistemde var olan sürücü harflerini ve etiketlerini yalnızca soruya verilen cevaba daha yakın olacak şekilde yazdırabilecek olursanız, doğru yönde en az hareket olmasına rağmen.
Chris Magnuson,

Kriterleri karşılayan bir çözüm sunmak için aşağı oy kullanıyorum? Vay ...
Scott

4
Birincisi, var olan ama CD / DVD sürücüsü gibi medya içermeyen sürücüler için hatalar üretiyor.
sonraki duyuruya kadar duraklatıldı.

Fikir için +1
Tyler Long

hepsi Çin kodunu selamla!
LogicDaemon
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.