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

[其他] 批处理获取U盘、可移动硬盘的盘符(2015-01-14更新)

我们应该用批处理做些实用的事情,本帖旨在讨论批处理中如何获取可移动磁盘的盘符(以便自动实现一些针对可移动磁盘的文件/文件夹操作),而不是纯粹为了显示一下可移动磁盘的盘符是什么(没有什么意义的事情还是少做为妙)。如果您的代码只是显示了一下findstr的结果或者直接echo了一下,请先尝试一下把结果保存到一个变量里面吧。

本帖讨论的只是方法,对于多于1个可移动磁盘情况,我们在这里不予过多讨论,如果您觉得有必要,请到相应版块单独发帖。

【方案一】fsutil
  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.         set DriveU=%%h
  5.     )
  6. )
  7. echo,%DriveU%
  8. pause
复制代码
【方案二】WMIC
  1. @echo off
  2. for /f "tokens=2 delims==" %%a in ('wmic LogicalDisk where "DriveType='2'" get DeviceID /value') do (
  3.     set DriveU=%%a
  4. )
  5. echo,%DriveU%
  6. pause
复制代码
【方案三】BAT + VBS (优点是可以兼容Win2000系统)
  1. @echo off
  2. for /f "delims=:" %%i in ('findstr /n "^:DynamicScript$" "%~f0"') do (
  3.     more +%%i "%~f0" > "%temp%\GetU.vbs"
  4. )
  5. for /f %%a in ('cscript /nologo "%temp%\GetU.vbs"') do (
  6.     set "DriveU=%%a"
  7. )
  8. echo,%DriveU%
  9. pause
  10. goto :eof
  11. :DynamicScript
  12. Set Fso = CreateObject("Scripting.FileSystemObject")
  13. Set B = Fso.Drives
  14. For Each A in B
  15.     If A.DriveType = 1 Then
  16.         aDisk = aDisk & A.DriveLetter & ": "
  17.     End If
  18. Next
  19. aDisk = Replace(aDisk, "A: ","")
  20. WScript.Echo aDisk
复制代码
1

评分人数

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

回复 4楼 的帖子

运行这个命令
fsutil fsinfo drivetype C:
看看结果
思考一下
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 6楼 的帖子

请问你想表达什么意思呢?

本帖旨在讨论批处理中如何获取可移动磁盘的盘符(以便自动实现一些针对可移动磁盘的文件/文件夹操作),而不是纯粹为了显示一下可移动磁盘的盘符是什么(没有什么意义的事情还是少做为妙)。如果您的代码只是显示了一下findstr的结果或者直接echo了一下,请先尝试一下把结果保存到一个变量里面吧。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 9楼 的帖子

HOME版系统和精简版系统类似,都是不完整的版本,网友戏称“太监版”或者“阉割版”,不仅无法使用WMIC,还有其它很多功能都被砍掉了。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 11楼 的帖子

1、Removable是为了兼容英文版操作系统,至于你说的中文系统下无法显示的问题,顶楼代码已更新并修复此bug,感谢你的测试。

2、对于多个U盘的情况,3楼的思路是没有问题,至于具体代码如何写,本帖不予过多讨论。

3、本帖主要是为了获取可移动盘符,以便下面自动实现一些针对可移动磁盘的文件/文件夹操作,6楼的代码只是显示了一下可移动盘符而已,偏离了主题,因此你对6楼的代码的修改,我这里也不做过多评论。

4、为了节约论坛空间,如无特殊需要,能用文字描述清楚的时候还是尽量不要贴图吧。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 12楼、13楼 的帖子

见15楼回复第三点

关于代码风格的问题,欢迎你参与讨论:批处理bat代码是越短越好吗?
http://bbs.bathome.net/viewthread.php?tid=4026
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 14楼 的帖子

有代码就拿出来跟大家分享的精神是非常好的,但是请尽量不要把跟主题不相关的代码也一股脑的贴出,如果认为有必要,可以单独发帖。实际上,关于最后分区盘符的问题,本论坛早已有相关帖子讨论过,建议您搜索一下并到那些帖子中继续讨论。我们这个帖子还是以讨论可移动盘符为主吧。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 18楼 的帖子

1、顶楼应经说清楚,本帖不讨论多个U盘的情况,如果有需要,稍加修改即可兼容;

2、顶楼业已说明,我们要把盘符保存到一个变量中,而不是仅仅显示一下(没啥用处);

3、我们写代码还是少用临时文件为好,以你这个代码为例,如果用户当前目录下有一个私人文件叫做dosz.txt,里面存放了一些重要的资料,而且有可能其它程序会调用此文件。一旦运行这个批处理,后果将可能相当严重。你也许会说“咱可以把这个临时文件生成到%temp%目录下啊”,首先,某些电脑根本没有%temp%这个系统变量,其次,某些杀软会监控%temp%中新文件的生成并报警(取决于杀软的设置)。总之,能不用临时文件就别用。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 26楼 的帖子

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

TOP

返回列表