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

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

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

[ 本帖最后由 scyz2008 于 2010-9-10 15:17 编辑 ]

  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 编辑 ]

TOP

试下,先谢过了,高手

TOP

mountvol 有一定风险,有问题跟帖说明.

TOP

不过还是不能自动更改盘符

TOP

刚试过,我在前面加了关闭explorer进程后才执行你的程序也不行

TOP

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

TOP

改成大写,试一下,我的磁盘卷标是小写的

TOP

label命令获得的卷标是大写的, 改下
是说我把代码改了一下 -.-

TOP

还是不行

TOP

首先用下面命令恢复你的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 ==============================================================
复制代码

TOP

OK了,不用每次都要启动两个命令吧

TOP

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

现在第二个bat正确的啦.

TOP

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

TOP

返回列表