ฉันจะรับรายการตัวอักษรไดรฟ์และป้ายกำกับที่เกี่ยวข้องในระบบ windows ผ่านไฟล์ bat ได้อย่างไร
ฉันจะรับรายการตัวอักษรไดรฟ์และป้ายกำกับที่เกี่ยวข้องในระบบ windows ผ่านไฟล์ bat ได้อย่างไร
คำตอบ:
สิ่งนี้จะได้รับประโยชน์สูงสุด:
Net Use
หากคุณมีไดรฟ์ใด ๆ ที่แมปผ่าน subst คุณจะต้องขอรับไดรฟ์เหล่านั้นด้วย:
Subst
เพื่อความสมบูรณ์คุณจะต้องทำเช่นนี้ใน Powershell (หากคุณใช้ Windows 7 หรือติดตั้งไว้):
gwmi win32_LogicalDisk -filter DriveType=4
คุณยังสามารถทำได้จากพรอมต์คำสั่งหรือแบตช์ไฟล์โดยใช้ WMI ดังนี้:
wmic logicaldisk get caption,providername,drivetype,volumename
ในการใช้ diskpart ไม่จำเป็นต้องสร้างไฟล์ระดับกลาง ลอง:
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
รวดเร็วยืดหยุ่นและมีประสิทธิภาพ แม้ว่าจะซับซ้อนเล็กน้อย
แรงบันดาลใจจากสกอตต์
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
ยังแสดงตัวอักษรไดรฟ์ซีดี ไม่จำเป็นต้องเป็นผู้ดูแลระบบ
mountvol
ตัวอย่างผลลัพธ์
\\?\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:\
หากใครโชคดีพอที่จะใช้ Vista (Vista Ultimate SP2 b6002 ในกรณีของฉัน) และgwmiตัวอย่างข้อมูลและwmicที่นี่ไม่ทำงานอย่างถูกต้องนี่คือสิ่งที่ฉันทำเพื่อให้ทำงานได้
สำหรับgwmiหากคุณไม่ได้รับผลลัพธ์ให้ลองเปลี่ยน DriveType เป็น 3 หากยังมีปัญหาอยู่ให้ลบตัวเลือก -filter ออกพร้อมกันแล้ววิเคราะห์ผลลัพธ์
gwmi win32_LogicalDisk -filter DriveType=3
สำหรับwmicหากคุณได้รับ "Express GET Expression" ไม่ถูกต้องให้ลองใส่get expression ในเครื่องหมายคำพูด:
wmic logicaldisk get "caption,providername,drivetype,volumename"
ไซต์นี้มีชุดการโทรที่เรียบง่ายกว่ามาก:
http://en.code-bude.net/2013/02/23/show-all-drives-in-command-prompt/
แสดงไดรฟ์ในเครื่อง:
wmic logicaldisk รับ deviceid, volumename, description
หากคุณต้องการแสดงเฉพาะไดรฟ์ประเภทใดประเภทหนึ่งคำสั่ง wmic สามารถขยายเพิ่มเติมเพื่อรวมส่วนคำสั่ง where
wmic logicaldisk โดยที่ drivetype = 2 รับ deviceid, volumename, description
ประเภท
0 => ไม่ทราบ
1 => ไม่มีไดเรกทอรีรูต
2 => ดิสก์ที่ถอดออกได้
3 => ดิสก์ภายในเครื่อง
4 => ไดรฟ์เครือข่าย
5 => คอมแพคดิสก์
6 => RAM Disk
@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"
ฉันพบวิธีการ diskpart รายงานไดรฟ์ดีวีดีโดยไม่ใส่ดิสก์และไม่รายงานการ์ด SD ที่มีไดรฟ์ข้อมูลที่ถูกต้อง
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
ค่อนข้าง kludgy แต่ทำงานจากแบตช์ไฟล์:
echo LIST VOLUME > temp.txt && diskpart /s temp.txt && del /q temp.txt
แม้ว่าจะมีคำตอบเพียงพอ แต่ฉันต้องการเพิ่มเมื่อคุณต้องการใช้ในแบทช์ไฟล์ หากคุณได้รับ "การแสดงออกของ GET ไม่ถูกต้อง" คุณสามารถใส่ ^ ก่อนหน้า ',' เช่นด้านล่าง:
for /F "usebackq tokens=1,2,3,4 " %%i in (`wmic logicaldisk get caption^,providername^,drivetype^,volumename 2^>NUL`) do echo %%i %%l
^
ทำที่นี่
@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