返回列表 发帖

[其他] 批处理修改盘符

代码供大家测试,
如果大家有更好的代码,请发出来共享~
@echo off
echo/&set/p diskA=要修改的盘符[如 D:]:
set/p diskB=修改后的盘符[如 L: ]:
for /f %%i in ('mountvol %diskA% /L') do (mountvol %diskA% /d && mountvol %diskb% %%i)
echo 操作成功,按任意键退出.
pause>nulCOPY
2

评分人数

收获,收获.
技术问题请到论坛发帖求助!

TOP

我这里也有一个

@echo off
title  磁盘盘符更换程序
color 1a
cls&echo.
set /p disk=  请输入要更改的盘:
set disk=%disk:~0,1%
echo.
set /p x-disk=  请输入更改后的盘:
set x-disk=%x-disk:~0,1%
echo select volume=%disk%:>%temp%\list.txt
echo remove>>%temp%\list.txt
echo assign letter=%x-disk%:>>%temp%\list.txt
echo exit>>%temp%\list.txt
diskpart /s %temp%\list.txtCOPY


执行起来慢多了!

TOP

恩,用diskpart是这个样子的了
我原来打算用diskpart写一个,后来就放弃了,原因就是执行速度太慢了

TOP

更改驱动器号, diskpart 确实比较慢. 以前本想用 mountvol 写一个, 可惜别人早写了, 所以才写了 diskpart 的.
以下是代码:

@echo off
::asgn letter [letter|/d]
::asgn No. [letter|/d]
if "%1"=="" Type "%~f0"|findstr "^::"&&goto :eof
set usr=net user %username%
set fnd=find /i "*administrator"
%usr%|%fnd%>nul||goto chkusr
if %1 lss 9 goto cont
set drv=fsutil fsinfo drives
%drv%|find /i "%1">nul||goto error1
%drv%|find /i "%2">nul&&goto error2
:cont
set file=%tmp%\script
if "%2"=="" goto auto
if "%2"=="/d" goto delete

:assign
echo select disk 0 >%file%
echo select volume %1 >>%file%
echo assign letter=%2 >>%file%
diskpart /s %file% >nul>nul
echo 成功指派了驱动器号或装载点

del %file%
goto :eof
:auto
echo select disk 0 >%file%
echo select volume %1 >>%file%
echo assign >>%file%
diskpart /s %file%>nul
echo 成功指派了驱动器号或装载点
del %file%
goto :eof
:delete
echo select disk 0 >%file%
echo select volume %1 >>%file%
echo remove >>%file%
diskpart /s %file%>nul
echo 成功删除了驱动器号或装载点
del %file%
goto :eof

:error1
echo 指定的驱动器不存在
goto :eof
:error2
echo 目标驱动器已存在
goto :eof
:chkusr
echo 没有管理特权
echo.

TOP

麻烦楼上的把代码用代码括起来?
这样更方便别人复制和阅读!
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

TOP

用不了呀

处理了
但还是没反映

TOP

原帖由 naughtycat 于 2008-3-15 11:12 发表
处理了
但还是没反映

不知你用的什么操作系统,我在XP SP2上通过了.

TOP

下来看看。
我的理想改盘符的想法是:光驱改成O,C不动,后面的按C后面排。
比较适合安系统前不分区,之后再分区的情况。
顺便寻找批处理按我提前设置好的数据分区和格式化的批处理

TOP

支持一下

三楼兄弟写的真是言简意赅,好用就是硬道理


为之狂顶!

[ 本帖最后由 greenskys 于 2008-5-12 17:12 编辑 ]

TOP

厉害啊!

狂顶!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1

TOP

修成畸形盘符  爽歪歪

batman记得要把那个查畸形盘符的代码贴一下哦
[url=][/url]

TOP

不好,把D盘变成了“不可装入卷”怎么办?

[环境:XPSP2]
==================================
查了查mountvol帮助,还好改过来了,晕菜
见方法二
==================================
分析:
我是按提示将D盘改成L盘,输入没错加了冒号。而批处理保存在D盘某目录下。
所以应该是执行到mountvol的删除命令后,由于没有了D盘,导致无法读取下一条命令,最终提前结束并退出。

解决方法:
[方法一]
就用该批处理就可以解决。
首先在一个还能打开的位置保存该批处理;
再运行它,第一步不输入直接回车,第二步输入“D:”,回车就好了。
虽然会有mountvol的帮助刷屏,至少能恢复正常——D盘可以用了。呵呵。

[方法二]
先用mountvol查看其帮助,得如下
\\?\Volume{bdcfe3d9-6ba2-11dd-b22a-806d6172696f}\
     *** 无装入点 ***
再用命令
mountvol d: \\?\Volume{bdcfe3d9-6ba2-11dd-b22a-806d6172696f}\
恢复。

[ 本帖最后由 wxcute 于 2008-8-25 18:48 编辑 ]

TOP

看看我楼上的问题,能不能改进下。

TOP

没人看,自己改好了。呼
@echo off
cd/d %~dp0
if /i not #%diskA%==# goto :pd
echo/&set/p diskA=要修改的盘符[如 D:]:
:pd
if /i %~d0==%diskA% copy %0 %systemDrive%>nul&&%systemDrive%\%~nx0
set/p diskB=修改后的盘符[如 L:]:
echo %diskA% --^> %diskb%
for /f %%i in ('mountvol %diskA% /L') do (mountvol %diskA% /d && mountvol %diskb% %%i)
echo 操作成功,按任意键退出.
pause>nulCOPY


通过上面的修改发现其实只要修改当前执行路径就行了。
最后合成一句是为了不出现“系统找不到指定的路径。”的提示。
@echo off
cd/d %systemDrive%\
echo/&set/p diskA=要修改的盘符[如 D:]:
set/p diskB=修改后的盘符[如 L:]:
echo %diskA% --^> %diskb%
for /f %%i in ('mountvol %diskA% /L') do (mountvol %diskA% /d && mountvol %diskb% %%i&echo 操作成功,按任意键退出.&pause>nul)COPY

[ 本帖最后由 wxcute 于 2008-8-25 20:01 编辑 ]

TOP

返回列表