Board logo

标题: [系统相关] [已解决]批处理如何实现隐藏/禁止访问/禁用/启用移动磁盘? [打印本页]

作者: ygqiang    时间: 2016-4-23 13:15     标题: [已解决]批处理如何实现隐藏/禁止访问/禁用/启用移动磁盘?

本帖最后由 pcl_test 于 2016-4-29 19:14 编辑

[已解决]bat批处理如何实现隐藏/禁止访问/禁用/启用移动磁盘?19楼剩下2个问题需要解决。

bat搭配第3方命令如何实现?某个可移动盘符不可访问。就在设备管理器里面,停用。

遇到的问题是:
1、多台不同的台式机,分别是xp系统或者win7系统。
2、因为会经常遇到很多不同品牌/型号的、非单一固定设备的、多合一读卡器。
这些读卡器每个卡槽都会显示盘符,如果某些卡槽不插入卡,就会无法访问盘符。

想要解决的是:
1、平时隐藏、禁止显示这种不能打开的盘符
2、偶尔需要在某个卡槽插入存储卡,就开启、显示这种盘符

下面的bat代码,可以实现xp/win7系统,隐藏不可读取/无法访问的盘符。
但找不到恢复/开启显示:这种不可读取/无法访问的读卡器盘符的方法。。

具体请看19楼。只要解决那2个问题,就可以达到预期效果了。
  1. @echo off
  2. echo 移动磁盘:
  3. 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 (
  4. fsutil fsinfo drivetype %%a: | find "移动">nul && (
  5. fsutil fsinfo volumeinfo %%a:\ | findstr "错误" >nul && echo %%a不可读取 && mountvol %%a: /d
  6. mountvol /L
  7. )
  8. )
  9. cls
  10. exit
复制代码

作者: ygqiang    时间: 2016-4-23 13:16

截图如下。
作者: Nsqs    时间: 2016-4-23 13:41

百度搜devcon
作者: ygqiang    时间: 2016-4-23 14:58

回复 3# Nsqs


因为会经常遇到很多不同品牌/型号的、非固定设备id的、多合一读卡器。

有没有比较通用的方法禁用这种盘符?
作者: ygqiang    时间: 2016-4-24 07:07

多谢。。。。
作者: CrLf    时间: 2016-4-24 08:53

mountvol F: /d
装载的时候,把 mountvol 里显示为空的装载点装上即可
作者: ygqiang    时间: 2016-4-24 20:25

回复 6# CrLf


运行:mountvol F: /d
win7系统下,我的电脑里面,看不到f盘了。下次如何启用/显示f盘呢?
作者: pcl_test    时间: 2016-4-24 20:32

回复 7# ygqiang


    重新挂载
作者: ygqiang    时间: 2016-4-24 20:43

本帖最后由 ygqiang 于 2016-4-24 20:45 编辑

回复 8# pcl_test

具体如何操作呢?
关键是:想要重新挂载。就不知道盘符了啊。
作者: pcl_test    时间: 2016-4-24 21:05

回复 9# ygqiang

获取没有装入点的卷名(GUID),分配个不存在的盘符,执行命令mountvol 盘符: 卷名(GUID)
作者: ygqiang    时间: 2016-4-24 22:20

回复 10# pcl_test


    获取没有装入点的卷名(GUID)??

如何实现?
作者: pcl_test    时间: 2016-4-24 22:30

回复 11# ygqiang


删除后,执行mountvol /l,what did you see
作者: ygqiang    时间: 2016-4-24 22:36

回复 12# pcl_test


mountvol /l
显示效果跟下面的一样。
mountvol /?
作者: pcl_test    时间: 2016-4-24 22:41

回复 13# ygqiang

比如可以看到
作者: ygqiang    时间: 2016-4-24 22:47

本帖最后由 ygqiang 于 2016-4-25 06:31 编辑

回复 14# pcl_test

mountvol /l>1.txt


创建、删除或列出卷装入点。

MOUNTVOL [drive:]path VolumeName
MOUNTVOL [drive:]path /D
MOUNTVOL [drive:]path /L
MOUNTVOL [drive:]path /P
MOUNTVOL /R
MOUNTVOL /N
MOUNTVOL /E

    path        指定装入点将驻留的现有 NTFS 目录。
    VolumeName  指定装入点的目标的卷名称。
    /D          从指定的目录中删除卷装入点。
    /L          列出指定目录的已装入的卷名称。
    /P          从指定目录删除卷装入点,卸下此卷并使此卷无法装入。您可以创建
                一个卷来再次使此卷可以装入。
    /R          删除不在系统中的、卷的装入点目录和注册表设置。
    /N          禁用新卷的自动装入。
    /E          再次启用新卷的自动装入。

当前装入点的 VolumeName 可能值为:

    \\?\Volume{ff641546-64dc-11e5-9fd0-806e6f6e6963}\
        C:\

    \\?\Volume{ff641547-64dc-11e5-9fd0-806e6f6e6963}\
        D:\

    \\?\Volume{4f64d9d0-e4e1-11e5-942a-bc5ff42115b2}\
        G:\

    \\?\Volume{4f64d9cb-e4e1-11e5-942a-bc5ff42115b2}\
        *** 无装入点 ***
作者: ygqiang    时间: 2016-4-24 22:48

回复 13# ygqiang


    mountvol
xp系统下无效?
只能在win7系统下运行吧?
作者: CrLf    时间: 2016-4-25 00:11

回复 16# ygqiang


    呃,您究竟是怎么毕业的...
    另外,论坛空间才 500M,亲们以后能不能少发图,这输出的内容明明可以复制的
作者: ygqiang    时间: 2016-4-25 06:31

回复 17# CrLf


恩。图片尽量不发。

    多谢。搜索到了。
xp下也有mountvol这个命令,不过只有/D 和/L 二种参数。
作者: ygqiang    时间: 2016-4-25 10:15     标题: bat如何:获取未分配的盘符字母,搜索txt文件关键字?

回复 14# pcl_test

bat如何:获取未分配的盘符字母,搜索txt文件关键字?

xp和win7系统环境下。
1、检索出系统、所有未分配的盘符字母,保存到1.txt文件(1行保存1个)
2、搜索test.txt文件关键字对应的项目,保存到2.txt文件(1行保存1个)。
比如搜索关键字是:*** 无装入点 ***
对应的项目分别是:
\\?\Volume{24ce4c5c-0a81-11e6-a77b-00242171631f}\
\\?\Volume{24ce4c5d-0a81-11e6-a77b-00242171631f}\

3、分别从1.txt和2.txt中取一行,分别赋值给变量aa、bb
执行mountvol %aa% %bb%
直到2.txt取完所有行。

2.txt里面有几行,就执行几次mountvol命令。
不用管1.txt有多少行。。


比如:mountvol f: \\?\Volume{24ce4c5c-0a81-11e6-a77b-00242171631f}\
mountvol h: \\?\Volume{24ce4c5d-0a81-11e6-a77b-00242171631f}\

test.txt、1.txt、2.txt文件内容如下

问题1、bat批处理代码如下
  1. @echo off
  2. for %%i 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. rem  if not defined pan (
  4.     subst "%%i:" "%temp%" >nul 2>nul && (
  5.       subst "%%i:" /d >nul 2>nul && set last_lab=%%i:
  6.       echo %%i:>>1.txt
  7.     ))
  8. )
  9. pause
  10. exit
复制代码

作者: codegay    时间: 2016-4-25 12:10

一直在问问题,从不进步?
作者: pcl_test    时间: 2016-4-25 20:33

不会变通是硬伤
http://www.bathome.net/viewthread.php?tid=37904
作者: ygqiang    时间: 2016-4-26 17:25

回复 22# pcl_test


    帮忙解决下19楼的问题吧。谢谢。
作者: codegay    时间: 2016-4-26 23:43

脑残吗              ?
作者: ygqiang    时间: 2016-4-27 23:40

求大神帮忙解决问题。谢谢
作者: ygqiang    时间: 2016-4-29 13:07

本帖最后由 ygqiang 于 2016-4-29 13:37 编辑

已经解决
  1. @echo off
  2. if exist c:\test.txt del /q c:\test.txt
  3. mountvol /L>>c:\test.txt
  4. mountvol /L>c:\test.txt
  5. ping 127.0.0.1 -n 3 >nul 2>nul
  6. @echo off
  7. echo 获取未分配的盘符
  8. if exist c:\test1.txt del /q c:\test1.txt
  9. for %%i 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 (
  10. rem  if not defined pan (
  11.     subst "%%i:" "%temp%" >nul 2>nul && (
  12.       subst "%%i:" /d >nul 2>nul && set last_lab=%%i:
  13.       echo %%i:>>c:\test1.txt
  14.     ))
  15. )
  16. ping 127.0.0.1 -n 2 >nul 2>nul
  17. @echo off&setlocal enabledelayedexpansion
  18. echo 搜索txt文件关键字
  19. for /f "tokens=1 delims=:" %%a in ('type c:\test.txt^|findstr /n "\*\*\*  *无装入点  *\*\*\*"') do (
  20. set/a i=%%a-1
  21. set #!i!=1
  22. )
  23. (for /f "tokens=1* delims=:" %%a in ('type c:\test.txt^|findstr /n .*') do (
  24. if defined #%%a (echo %%b)
  25. ))>c:\test2.txt
  26. ping 127.0.0.1 -n 2 >nul 2>nul
  27. @echo off&setlocal enabledelayedexpansion
  28. echo 提取txt文件,按行对应提取
  29. for /f "delims=" %%b in (c:\test2.txt) do (
  30. set /a n+=1
  31. call :p2 !n!
  32. echo !p! %%b && mountvol !p! %%b
  33. )
  34. goto :yctypf
  35. :p2
  36. set m=0
  37. for /f "delims=" %%c in (c:\test1.txt) do (
  38. set /a m+=1
  39. if !m! == %1 set p=%%c
  40. )
  41. goto :eof
  42. :yctypf
  43. ping 127.0.0.1 -n 20 >nul 2>nul
  44. @echo off
  45. echo 移动磁盘:
  46. echo 隐藏停用不可访问的盘符
  47. 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 (
  48. fsutil fsinfo drivetype %%a: | find "移动">nul && (
  49. fsutil fsinfo volumeinfo %%a:\ | findstr "错误" >nul && echo %%a不可读取 && mountvol %%a: /d
  50. )
  51. )
  52. 1pause
  53. cls
  54. if exist c:\test.txt del /q c:\test.txt
  55. if exist c:\test1.txt del /q c:\test1.txt
  56. if exist c:\test2.txt del /q c:\test2.txt
  57. 1pause
  58. exit
  59. xp下也有mountvol这个命令,不过只有/D 和/L 二种参数。
  60. copy /y devcon.* C:\WINDOWS
  61. copy /y devcon.* C:\WINDOWS\system32
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2