[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 要怎么获取U盘的盘符?

本帖最后由 pcl_test 于 2017-4-1 16:49 编辑

要求是这样

不可用fsutil,因为win 2000没有
vbs可,但尽量避免
wmic也不可,因为win 2000没有
不能用中文字串判断是否为U盘,因为有可能会用到E文系统

目前由抓取注册表和SED来提取过滤光盘
但U盘没有比较好的方式

这边附上自己做的抓光盘並去除的批处,作的不好献丑了
  1. IF EXIST %SYSTEM%\MOUNTVOL.EXE %SYSTEM%\MOUNTVOL.EXE|SED -r "/^ +(.):\\$/!d;s//\1/" >.\TEMP\TEMP00
  2. 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
  3. SWREG EXPORT "HKLM\SYSTEM\MOUNTEDDEVICES" ".\TEMP\TEMP01" /NT4 >NUL 2>&1
  4. SED "s/hex/hex\(1\)/Ig;s/SYSTEM/software\\efix/I" .\TEMP\TEMP01>.\TEMP\TEMP02
  5. GREP -iq "EFix" .\TEMP\TEMP02 && SWREG IMPORT .\TEMP\TEMP02 >NUL 2>&1
  6. SWREG QUERY "HKLM\SOFTWARE\EFIX\MOUNTEDDEVICES"|SED -r "/^   \\DosDevices\\(.):\t.*cdrom.*$/I!d;s//\1/">.\TEMP\TEMP03
  7. IF EXIST .\DAT\CDROM.DAT DEL .\DAT\CDROM.DAT >NUL 2>&1
  8. GREP -Fvif .\TEMP\TEMP03 .\TEMP\TEMP00 >.\DAT\CDROM.DAT
  9. DEL .\TEMP\TEMP0? /Q >NUL 2>&1
复制代码
[ 本帖最后由 sylovanas 于 2008-12-1 21:34 编辑 ]

谁能告诉我 以最后一个盘符作为 U 盘盘符 这个方法会不会出错?

TOP

  1. @echo off
  2. 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 (
  3.   for /f %%h in ('fsutil fsinfo drivetype %%a:^|findstr "Removable 可移动"') do (
  4.     echo %%h
  5.   )
  6. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2楼 的帖子

可能出错。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

原帖由 Batcher 于 2008-12-1 22:15 发表
可能出错。
什么情况下会出错?

TOP

看看这个
http://bbs.bathome.net/viewthread.php?tid=573&highlight=

  1. devcon.exe disable  USB\Class_08
  2. devcon.exe enable USB\Class_08
复制代码

TOP

原帖由 tireless 于 2008-12-1 22:11 发表
谁能告诉我 以最后一个盘符作为 U 盘盘符 这个方法会不会出错?

  目前的机器,有两个以上USB接口的应该是主流了,如果有人除了接U盘外,还接了移动硬盘呢?另外,虚拟光驱也不是什么新鲜事了,那些ISO文件在使用的时候大都得占用一个分区号吧?这些情况都有可能造成最后一个盘符不一定就是U盘的盘符。
  还有一种比较BT的情况:一个U盘分了N个区,嘿嘿,奸笑ing。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

回复 3楼 的帖子

fsutil不行,原因已经有提过了
win2000是主要问题所在

第三方工具是能避尽量避
不然用Fi就可以了。

TOP

VBScript WMI 对象方法就不说了2000不支持
VBScript Scripting.FileSystemObject 对象方法

  1. Set Fso = CreateObject("Scripting.FileSystemObject")
  2. Set B = Fso.Drives
  3. For Each A in B
  4.     If A.DriveType = 1 Then
  5.        aDisk = aDisk & A.DriveLetter & ": "
  6.     End If
  7. Next
  8. aDisk = Replace(aDisk, "A: ","")
  9. If aDisk = "" Then
  10.    WScript.Echo  "U盘设备未插入"
  11.    Else
  12.    WScript.Echo "U盘符为 " & aDisk
  13. End If
复制代码

TOP

代码可用,使用起来也很完美
非常感谢

TOP

返回列表