it-swarm-vi.tech

Làm cách nào để có được danh sách các ký tự ổ đĩa trên hệ thống thông qua windows Shell (bat, cmd)?

Làm cách nào để có được danh sách các ký tự ổ đĩa và nhãn liên quan của chúng trên hệ thống windows thông qua tệp dơi?

26
Chris Magnuson

Điều này sẽ nhận được hầu hết của nó:

Net Use

Nếu bạn có bất kỳ ổ đĩa nào được ánh xạ qua trạm biến áp, bạn cũng cần có được những ổ đĩa đó:

Subst

Để hoàn thiện, bạn sẽ làm như thế này trong Powershell (nếu bạn đang ở trên windows 7 hoặc đã cài đặt nó):

gwmi win32_LogicalDisk -filter DriveType=4

Bạn cũng có thể thực hiện nó từ lệnh Prompt hoặc tệp bó bằng WMI như thế này:

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

Để sử dụng Diskpart, không cần tạo tệp trung gian. Thử:

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

Nhanh chóng, linh hoạt và hiệu quả. Mặc dù hơi phức tạp.

10
Dharma Leonardi

lấy cảm hứng từ Scott

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

cũng hiển thị ký tự ổ đĩa CD. không cần phải là admin.

7
Yuning
mountvol

đầu ra mẫu

\\?\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

Nếu bất cứ ai là may mắn đủ để sử dụng Vista (Vista Ultimate SP2 b6002, trong trường hợp của tôi) và gwmi và - wmic đoạn trích được đưa ra ở đây không hoạt động chính xác, đây là những gì tôi đã làm để làm cho nó hoạt động.

Đối với gwmi, nếu bạn không nhận được đầu ra, hãy thử thay đổi DriveType thành 3. Nếu vẫn gặp sự cố, hãy xóa hoàn toàn tùy chọn -filter và phân tích đầu ra.

gwmi win32_LogicalDisk -filter DriveType=3

Đối với wmic, nếu bạn nhận được "Biểu thức GET không hợp lệ", thì hãy thử đặt biểu thức get trong dấu ngoặc kép:

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

Trang web này có một bộ các cuộc gọi đơn giản hơn nhiều:

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

Hiển thị ổ đĩa cục bộ:

wd logicdisk nhận thiết bị, volumame, mô tả


Nếu bạn muốn chỉ hiển thị các ổ đĩa của một loại cụ thể, lệnh wmic có thể được mở rộng hơn nữa để bao gồm một mệnh đề where.

wmic logicdisk trong đó drivetype = 2 lấy deviceid, volumame, mô tả

Các loại

0 => Không biết

1 => Không có thư mục gốc

2 => Đĩa di động

3 => Đĩa cục bộ

4 => Ổ đĩa mạng

5 => Đĩa compact

6 => RAM Đĩa

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"

Tôi thấy cách tiếp cận của phần mềm báo cáo các ổ đĩa DVD không có đĩa được chèn và không báo cáo thẻ SD có dung lượng ổ đĩa hợp lệ

1
Nick

Hơi nhiều, nhưng hoạt động từ một tệp bó:

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

Mặc dù nó có đủ câu trả lời, tôi muốn thêm một câu khi bạn muốn sử dụng nó trong tệp bó. Nếu bạn nhận được "Biểu thức GET không hợp lệ", bạn có thể đặt ^ trước dấu ',', như bên dưới:

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