我们应该用批处理做些实用的事情,本帖旨在讨论批处理中如何获取可移动磁盘的盘符(以便自动实现一些针对可移动磁盘的文件/文件夹操作),而不是纯粹为了显示一下可移动磁盘的盘符是什么(没有什么意义的事情还是少做为妙)。如果您的代码只是显示了一下findstr的结果或者直接echo了一下,请先尝试一下把结果保存到一个变量里面吧。
本帖讨论的只是方法,对于多于1个可移动磁盘情况,我们在这里不予过多讨论,如果您觉得有必要,请到相应版块单独发帖。
【方案一】fsutil- @echo off
- 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 (
- for /f %%h in ('fsutil fsinfo drivetype %%a:^|findstr "Removable.* 可移动"') do (
- set DriveU=%%h
- )
- )
- echo,%DriveU%
- pause
复制代码 【方案二】WMIC- @echo off
- for /f "tokens=2 delims==" %%a in ('wmic LogicalDisk where "DriveType='2'" get DeviceID /value') do (
- set DriveU=%%a
- )
- echo,%DriveU%
- pause
复制代码 【方案三】BAT + VBS (优点是可以兼容Win2000系统)- @echo off
- for /f "delims=:" %%i in ('findstr /n "^:DynamicScript$" "%~f0"') do (
- more +%%i "%~f0" > "%temp%\GetU.vbs"
- )
- for /f %%a in ('cscript /nologo "%temp%\GetU.vbs"') do (
- set "DriveU=%%a"
- )
- echo,%DriveU%
- pause
- goto :eof
-
- :DynamicScript
- Set Fso = CreateObject("Scripting.FileSystemObject")
- Set B = Fso.Drives
-
- For Each A in B
- If A.DriveType = 1 Then
- aDisk = aDisk & A.DriveLetter & ": "
- End If
- Next
- aDisk = Replace(aDisk, "A: ","")
- WScript.Echo aDisk
复制代码
|