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 bat?
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 bat?
Câu trả lời:
Đ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ể làm điều đó từ dấu nhắc lệnh hoặc tệp bó bằng WMI như thế này:
wmic logicaldisk get caption,providername,drivetype,volumename
Để sử dụng đĩa, không cần tạo tệp trung gian. Thử:
echo list volume | diskpart
@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
Nhanh chóng, linh hoạt và hiệu quả. Mặc dù hơi phức tạp.
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.
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:\
Nếu bất cứ ai đủ may mắn để sử dụng Vista (trong trường hợp của tôi là Vista Ultimate SP2 b6002) và các đoạn gwmi và wmic đượ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 loại bỏ 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"
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 => Đĩa RAM
@echo off
echo list volume > scriptdiskpart
diskpart/s scriptdiskpart
del scriptdiskpart
pause
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 ổ đĩ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ệ
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
^
làm gì ở đây?
@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