Board logo

标题: [系统相关] [已解决]批处理识别带卷标硬盘分区并自动将此分区改为E盘? [打印本页]

作者: scyz2008    时间: 2010-9-9 09:58     标题: [已解决]批处理识别带卷标硬盘分区并自动将此分区改为E盘?

本机上有几个硬盘,有时重装系统之后会导致盘符乱掉,而我们这个点歌系统对其它盘没有什么要求,
只需要一个卷标为“scyz-zy”的盘为E盘即可以使用,
比如有时scyz-zy这个卷标的盘为G盘,有没有批处理可以自动识别到此分区,并自动将这个G盘改为E盘的脚本呀?

[ 本帖最后由 scyz2008 于 2010-9-10 15:17 编辑 ]
作者: hfg1977    时间: 2010-9-9 13:48

  1. @echo off
  2. setlocal enabledelayedexpansion&cls
  3. path=%path%;%~d0\DOS\网络;%~d0\DOS\command\第三方命令行程序;%~d0\DOS\command;%~d0\DOS\源码;%~d0\DOS\系统备份
  4. :start ============================================================
  5. for /f "delims=\" %%i in ('fsutil fsinfo drives^|find /v ""') do (
  6. set var=%%i
  7. set drive=!var:~-2!
  8. echo.|label !drive!|find "scyz-zy"&&set/a find_BL=1
  9. if "!find_BL!"=="1" (
  10. for /f "delims= " %%i in ('mountvol E: /l') do set E_old=%%i
  11. for /f "delims= " %%a in ('mountvol !drive! /l') do (mountvol E: /d & mountvol E: %%a & mountvol !drive! !E_old!)
  12. goto end
  13. )
  14. )
  15. :end ==============================================================
复制代码

[ 本帖最后由 hfg1977 于 2010-9-9 14:11 编辑 ]
作者: scyz2008    时间: 2010-9-9 14:25

试下,先谢过了,高手
作者: hfg1977    时间: 2010-9-9 14:34

mountvol 有一定风险,有问题跟帖说明.
作者: scyz2008    时间: 2010-9-9 14:35

不过还是不能自动更改盘符
作者: scyz2008    时间: 2010-9-9 14:35

刚试过,我在前面加了关闭explorer进程后才执行你的程序也不行
作者: hfg1977    时间: 2010-9-9 14:46

label命令获得的卷标是大写的, 改下
  1. @echo off
  2. setlocal enabledelayedexpansion&cls
  3. :start ============================================================
  4. for /f "delims=\" %%i in ('fsutil fsinfo drives^|find /v ""') do (
  5. set var=%%i
  6. set drive=!var:~-2!
  7. set/a find_BL=0
  8. echo.|label !drive! 2>nul|find /i "scyz-zy"&&set/a find_BL=1
  9. if "!find_BL!"=="1" (
  10. for /f "delims= " %%i in ('mountvol E: /l') do set E_old=%%i
  11. for /f "delims= " %%a in ('mountvol !drive! /l') do (mountvol E: /d & mountvol E: %%a & mountvol !drive! !E_old!)
  12. goto end
  13. )
  14. )
  15. :end ==============================================================
复制代码

作者: scyz2008    时间: 2010-9-9 14:50

改成大写,试一下,我的磁盘卷标是小写的
作者: hfg1977    时间: 2010-9-9 14:54

label命令获得的卷标是大写的, 改下
是说我把代码改了一下 -.-
作者: scyz2008    时间: 2010-9-9 14:54

还是不行
作者: hfg1977    时间: 2010-9-9 15:42

首先用下面命令恢复你的E: 盘
  1. @echo off
  2. :start ============================================================
  3. if not exist Volume.txt (mountvol|findstr "\\\\\?\\Volume">Volume.txt)
  4. for /f "skip=1 usebackq delims= " %%a in ("Volume.txt") do (
  5. echo %%a
  6. mountvol E: %%a 2>nul&&goto end
  7. )
  8. :end ==============================================================
  9. pause
复制代码
在用下面的:
  1. @echo off
  2. setlocal enabledelayedexpansion&cls
  3. :start ============================================================
  4. for /f "delims=\" %%i in ('fsutil fsinfo drives^|find /v ""') do (
  5. set var=%%i
  6. set drive=!var:~-2!
  7. set/a find_BL=0
  8. echo.|label !drive! 2>nul|find /i "scyz-zy"&&(set/a find_BL=1&echo OK)
  9. if "!find_BL!"=="1" (
  10. echo !drive!
  11. for /f "delims= " %%m in ('mountvol E: /l') do echo E: +%%m+ & set E_old=%%m
  12. for /f "delims= " %%a in ('mountvol !drive! /l') do (
  13. echo !drive! +%%a+
  14. mountvol E: /d&mountvol !drive! /d
  15. mountvol E: %%a&mountvol !drive! !E_old!
  16. )
  17. goto end
  18. )
  19. )
  20. :end ==============================================================
复制代码

作者: scyz2008    时间: 2010-9-9 17:32

OK了,不用每次都要启动两个命令吧
作者: hfg1977    时间: 2010-9-9 17:58

第一个bat仅仅是修正第二个bat造成的错误呀,用完删除好了.

现在第二个bat正确的啦.
作者: scyz2008    时间: 2010-9-10 15:06

如果第二个批外理,放在另外的电脑是否一样的可用,不用执行第一个批处理了吧




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