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

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

本帖最后由 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
复制代码
1

评分人数

本帖最后由 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
复制代码

TOP

求大神帮忙解决问题。谢谢

TOP

脑残吗              ?
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

回复 22# pcl_test


    帮忙解决下19楼的问题吧。谢谢。

TOP

TOP

一直在问问题,从不进步?
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

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
复制代码
1

评分人数

TOP

回复 17# CrLf


恩。图片尽量不发。

    多谢。搜索到了。
xp下也有mountvol这个命令,不过只有/D 和/L 二种参数。

TOP

回复 16# ygqiang


    呃,您究竟是怎么毕业的...
    另外,论坛空间才 500M,亲们以后能不能少发图,这输出的内容明明可以复制的

TOP

回复 13# ygqiang


    mountvol
xp系统下无效?
只能在win7系统下运行吧?

TOP

本帖最后由 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}\
        *** 无装入点 ***

TOP

回复 13# ygqiang

比如可以看到

TOP

回复 12# pcl_test


mountvol /l
显示效果跟下面的一样。
mountvol /?

TOP

回复 11# ygqiang


删除后,执行mountvol /l,what did you see

TOP

返回列表