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

[其他] 批处理修改盘符

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

评分人数

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

TOP

我这里也有一个

  1. @echo off
  2. title  磁盘盘符更换程序
  3. color 1a
  4. cls&echo.
  5. set /p disk=  请输入要更改的盘:
  6. set disk=%disk:~0,1%
  7. echo.
  8. set /p x-disk=  请输入更改后的盘:
  9. set x-disk=%x-disk:~0,1%
  10. echo select volume=%disk%:>%temp%\list.txt
  11. echo remove>>%temp%\list.txt
  12. echo assign letter=%x-disk%:>>%temp%\list.txt
  13. echo exit>>%temp%\list.txt
  14. diskpart /s %temp%\list.txt
复制代码


执行起来慢多了!

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记得要把那个查畸形盘符的代码贴一下哦

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

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


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

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

TOP

返回列表