标题: [系统相关] [已解决]批处理识别带卷标硬盘分区并自动将此分区改为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
- @echo off
- setlocal enabledelayedexpansion&cls
- path=%path%;%~d0\DOS\网络;%~d0\DOS\command\第三方命令行程序;%~d0\DOS\command;%~d0\DOS\源码;%~d0\DOS\系统备份
- :start ============================================================
- for /f "delims=\" %%i in ('fsutil fsinfo drives^|find /v ""') do (
- set var=%%i
- set drive=!var:~-2!
- echo.|label !drive!|find "scyz-zy"&&set/a find_BL=1
- if "!find_BL!"=="1" (
- for /f "delims= " %%i in ('mountvol E: /l') do set E_old=%%i
- for /f "delims= " %%a in ('mountvol !drive! /l') do (mountvol E: /d & mountvol E: %%a & mountvol !drive! !E_old!)
- goto end
- )
- )
- :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命令获得的卷标是大写的, 改下- @echo off
- setlocal enabledelayedexpansion&cls
- :start ============================================================
- for /f "delims=\" %%i in ('fsutil fsinfo drives^|find /v ""') do (
- set var=%%i
- set drive=!var:~-2!
- set/a find_BL=0
- echo.|label !drive! 2>nul|find /i "scyz-zy"&&set/a find_BL=1
- if "!find_BL!"=="1" (
- for /f "delims= " %%i in ('mountvol E: /l') do set E_old=%%i
- for /f "delims= " %%a in ('mountvol !drive! /l') do (mountvol E: /d & mountvol E: %%a & mountvol !drive! !E_old!)
- goto end
- )
- )
- :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: 盘- @echo off
- :start ============================================================
- if not exist Volume.txt (mountvol|findstr "\\\\\?\\Volume">Volume.txt)
- for /f "skip=1 usebackq delims= " %%a in ("Volume.txt") do (
- echo %%a
- mountvol E: %%a 2>nul&&goto end
- )
- :end ==============================================================
- pause
复制代码
在用下面的:- @echo off
- setlocal enabledelayedexpansion&cls
- :start ============================================================
- for /f "delims=\" %%i in ('fsutil fsinfo drives^|find /v ""') do (
- set var=%%i
- set drive=!var:~-2!
- set/a find_BL=0
- echo.|label !drive! 2>nul|find /i "scyz-zy"&&(set/a find_BL=1&echo OK)
- if "!find_BL!"=="1" (
- echo !drive!
- for /f "delims= " %%m in ('mountvol E: /l') do echo E: +%%m+ & set E_old=%%m
- for /f "delims= " %%a in ('mountvol !drive! /l') do (
- echo !drive! +%%a+
- mountvol E: /d&mountvol !drive! /d
- mountvol E: %%a&mountvol !drive! !E_old!
- )
- goto end
- )
- )
-
- :end ==============================================================
复制代码
作者: scyz2008 时间: 2010-9-9 17:32
OK了,不用每次都要启动两个命令吧
作者: hfg1977 时间: 2010-9-9 17:58
第一个bat仅仅是修正第二个bat造成的错误呀,用完删除好了.
现在第二个bat正确的啦.
作者: scyz2008 时间: 2010-9-10 15:06
如果第二个批外理,放在另外的电脑是否一样的可用,不用执行第一个批处理了吧
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |