标题: [文件操作] 要怎么获取U盘的盘符? [打印本页]
作者: sylovanas 时间: 2008-12-1 21:29 标题: 要怎么获取U盘的盘符?
本帖最后由 pcl_test 于 2017-4-1 16:49 编辑
要求是这样
不可用fsutil,因为win 2000没有
vbs可,但尽量避免
wmic也不可,因为win 2000没有
不能用中文字串判断是否为U盘,因为有可能会用到E文系统
目前由抓取注册表和SED来提取过滤光盘
但U盘没有比较好的方式
这边附上自己做的抓光盘並去除的批处,作的不好献丑了- IF EXIST %SYSTEM%\MOUNTVOL.EXE %SYSTEM%\MOUNTVOL.EXE|SED -r "/^ +(.):\\$/!d;s//\1/" >.\TEMP\TEMP00
- IF NOT EXIST .\TEMP\TEMP00 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 ECHO %%A>>.\TEMP\TEMP00
- SWREG EXPORT "HKLM\SYSTEM\MOUNTEDDEVICES" ".\TEMP\TEMP01" /NT4 >NUL 2>&1
- SED "s/hex/hex\(1\)/Ig;s/SYSTEM/software\\efix/I" .\TEMP\TEMP01>.\TEMP\TEMP02
- GREP -iq "EFix" .\TEMP\TEMP02 && SWREG IMPORT .\TEMP\TEMP02 >NUL 2>&1
- SWREG QUERY "HKLM\SOFTWARE\EFIX\MOUNTEDDEVICES"|SED -r "/^ \\DosDevices\\(.):\t.*cdrom.*$/I!d;s//\1/">.\TEMP\TEMP03
- IF EXIST .\DAT\CDROM.DAT DEL .\DAT\CDROM.DAT >NUL 2>&1
- GREP -Fvif .\TEMP\TEMP03 .\TEMP\TEMP00 >.\DAT\CDROM.DAT
- DEL .\TEMP\TEMP0? /Q >NUL 2>&1
复制代码
[ 本帖最后由 sylovanas 于 2008-12-1 21:34 编辑 ]
作者: tireless 时间: 2008-12-1 22:11
谁能告诉我 以最后一个盘符作为 U 盘盘符 这个方法会不会出错?
作者: Batcher 时间: 2008-12-1 22:15
- @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 (
- echo %%h
- )
- )
复制代码
作者: Batcher 时间: 2008-12-1 22:15 标题: 回复 2楼 的帖子
可能出错。
作者: tireless 时间: 2008-12-1 22:23
原帖由 Batcher 于 2008-12-1 22:15 发表
可能出错。
什么情况下会出错?
作者: fastslz 时间: 2008-12-1 22:30
看看这个
http://bbs.bathome.net/viewthread.php?tid=573&highlight=
- devcon.exe disable USB\Class_08
- devcon.exe enable USB\Class_08
复制代码
作者: namejm 时间: 2008-12-1 23:48
原帖由 tireless 于 2008-12-1 22:11 发表
谁能告诉我 以最后一个盘符作为 U 盘盘符 这个方法会不会出错?
目前的机器,有两个以上USB接口的应该是主流了,如果有人除了接U盘外,还接了移动硬盘呢?另外,虚拟光驱也不是什么新鲜事了,那些ISO文件在使用的时候大都得占用一个分区号吧?这些情况都有可能造成最后一个盘符不一定就是U盘的盘符。
还有一种比较BT的情况:一个U盘分了N个区,嘿嘿,奸笑ing。
作者: sylovanas 时间: 2008-12-2 01:00 标题: 回复 3楼 的帖子
fsutil不行,原因已经有提过了
win2000是主要问题所在
第三方工具是能避尽量避
不然用Fi就可以了。
作者: fastslz 时间: 2008-12-3 10:28
VBScript WMI 对象方法就不说了2000不支持
VBScript Scripting.FileSystemObject 对象方法
- 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: ","")
- If aDisk = "" Then
- WScript.Echo "U盘设备未插入"
- Else
- WScript.Echo "U盘符为 " & aDisk
- End If
复制代码
作者: sylovanas 时间: 2008-12-8 10:20
代码可用,使用起来也很完美
非常感谢
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |