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

[系统相关] [已解决]批处理更改可移动磁盘两个相邻分区的盘符

在网上找到两段代码 可以更改当前盘盘符为X

如何修改能同时更改后一个盘的盘符
比如把D改成X后 把E改成Y
请各位大侠帮忙

[ 本帖最后由 z5653821 于 2009-11-11 11:42 编辑 ]
1

评分人数

    • Batcher: 感谢主动给标题标注[已解决]字样PB + 2

初来乍到就见到老大出手 呵呵 激动啊

TOP

重新测试了一下
版主可能误解了我的意思

我希望的结果是:更改当前盘和当前盘后一个盘的盘符
如我的移动硬盘插上之后是 G和H 当然不同机器上盘符也不同,只是举个例子

能不能有劳版主稍加修改 把当前盘【可能是G也可能是其他盘符】和紧接着的盘符【比如是H】
分别修改为X盘和Y盘

  1. @ echo off
  2. rem 功能重新分配当前的盘符至固定盘符
  3. title 盘符重新分配
  4. cls
  5. if /i "%oldvol%"=="c:\" echo.&&echo 不能更改系统盘盘符?&&goto end
  6. del allyesno.txt>nul 2>nul
  7. rem 输出所有盘符信息至allyesno.txt文件
  8. mountvol/l>>allyesno.txt
  9. setlocal enabledelayedexpansion
  10. rem 查找当前盘符
  11. rem for %%i in (%cd%) do set oldvol=%%~di\
  12. rem 查找当前盘符对应的序列号
  13. set num=0
  14. for /f %%i in (allyesno.txt) do (
  15. set/a num+=1
  16. set allyesno=%%i
  17. if "!allyesno!"=="%oldvol%" set oldvolnum=!num!
  18. )
  19. rem 计算当前盘符VolumeName值对应的序列号
  20. set/a oldvolnamenum=!oldvolnum!-1
  21. rem 查找当前盘符VolumeName值
  22. set num=0
  23. for /f %%i in (allyesno.txt) do (
  24. set/a num+=1
  25. set allyesno=%%i
  26. if "!num!"=="!oldvolnamenum!" set oldvolname=!allyesno!
  27. )
  28. rem 删除当前盘符
  29. mountvol !oldvol! /d
  30. rem 重新分配盘符为X:
  31. mountvol x: !oldvolname!
复制代码

[ 本帖最后由 z5653821 于 2009-11-2 18:30 编辑 ]

TOP

在上面的代码里面 已经得到当前盘盘符是 oldvol
那下面一个盘符应该是 oldvol+1之类的 【本人不懂bat 不知道语法格式】
有没有人能帮下忙

TOP

回复 6楼 的帖子

请教KEEN一个问题

【rem 删除当前盘符
mountvol !oldvol! /d
rem 重新分配盘符为X:
mountvol x: !oldvolname!】

如果已经知道 当前盘的盘符是oldvol  在bat里面 怎样把后面临近的一个盘表示出来
是不是: oldvol=oldvol+1 ?
只要能表示 只要在上面两行的基础上再加两行就可以了
因为移动硬盘的分区名称是已知的 我可以随意修改

TOP

回复 9楼 的帖子

多谢版主 我再试试看

TOP

回复 12楼 的帖子

呵呵 我马上改下 不过
很遗憾,你的代码还是没有成功啊

TOP

回复 14楼 的帖子

..............啥情况啊 我放在g盘测试的 我在cmd里看下运行结果 =下哈。



G:\>G:\a.cmd
当前:G:→X:,下一个:H:→Y:
'a.cmd' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

[ 本帖最后由 z5653821 于 2009-11-2 21:47 编辑 ]

TOP

经过重新测试已经成功,上次没有成功应该是跟之前运行过批处理程序又把盘符改回来有关。

TOP

还有一个问题

  1. @echo off&setlocal enabledelayedexpansion
  2. set temp_=ABCDEFGHIJKLMNOPQRSTUVWXYZ
  3. for /l %%a in (0,1,26) do if "!temp_:~%%a,1!" == "%cd:~0,1%" (set /a temp__=%%a+1)
  4. if /i "%cd:~0,1%" == "C" (
  5. for /f "tokens=1,2 delims=," %%a in (temp) do (
  6. for /f "delims=" %%i in ('mountvol %%a /l') do mountvol %%a /d&mountvol X: %%i
  7. for /f "delims=" %%j in ('mountvol %%b /l') do mountvol %%b /d&mountvol Y: %%j
  8. )
  9. erase temp,%~nx0&(echo.Done.&pause>nul)&goto :loop
  10. ) else (
  11. echo.当前:%cd:~0,1%:→X:,下一个:!temp_:~%temp__%,1!:→Y:
  12. echo.%cd:~0,1%:,!temp_:~%temp__%,1!:>c:\temp
  13. copy %0 c:\>nul&pushd c:&%~nx0
  14. )
  15. :loop
复制代码


在执行完上述代码后
如何跳出循环 进入修改后的X盘 执行其他操作
如运行某EXE程序
不好意思 我搜索了论坛里的帖子,实在看不懂

TOP

原帖由 zljzsmzzx 于 2009-11-6 10:37 发表
接上帖…
@echo off
if "%~1" neq "a" (set nowdrv=%cd:~0,2%© %~s0 "%temp%" >nul&cd /d "%temp%"&call %~nx0 a&exit)
if/i "%nowdrv%" equ "%windir:~0,2%" (echo,系统分区,不可更改。&pause&exit)
setl ...


将两个符号分别修改为 ^和|后经测试无效 不过还是感谢zljzsmzzx 的热心帮助

TOP

原帖由 lxzzr 于 2009-11-2 21:00 发表
我开始也没仔细去想,现在把我的盘符搞得乱七八糟的,呵呵

这样应该好了:
将代码放在要修改的第一个盘里执行

@echo off&setlocal enabledelayedexpansion
set temp_=ABCDEFGHIJKLMNOPQRSTUVWXYZ
for /l % ...


执行完这段代码后还能执行别的吗?

比如
x:
x:\*.exe

TOP

  1. @echo off
  2. if "%~1" neq "a" (copy/y %~s0 "%temp%">nul&set nowdrv=%cd:~0,2%&cd/d "%temp%"&call %~nx0 a&exit)
  3. if/i "%nowdrv%" equ "%windir:~0,2%" (echo,系统分区不可更改。&pause&exit)
  4. setlocal enabledelayedexpansion
  5. for /f "delims=\" %%a in ('fsutil fsinfo drives^|find /v ""') do (set/a n+=1&set drv=%%a&set drv!n!=!drv:~-2!&if /i "%nowdrv%" equ "!drv:~-2!" (set a=!n!&set/a b=!n!+1))
  6. call :set !drv%a%! X:
  7. call :set !drv%b%! Y:
  8. cd/d x:
  9. rem 重新启动vstart.exe
  10. taskkill /F /IM Vstart.exe
  11. x:
  12. cd\
  13. vstart.exe
  14. exit
  15. :set
  16. for /f %%i in ('mountvol %1 /l') do (mountvol %1 /d&&mountvol %2 %%i)
复制代码


请问是这样做吗?
我测试了一下 还是不行啊
悲剧,版主你的办法也还是不行啊

我想要改变盘符之后在X盘中重启一个vstart.exe的程序

  1. rem 重新启动vstart.exe
  2. taskkill /F /IM Vstart.exe
  3. x:
  4. cd\
  5. vstart.exe
复制代码

TOP

回复 26楼 的帖子

放在第一个分区根目录下运行 运行了之后窗口一闪而过,什么反映都没有 你说我能说什么呢?

TOP

回复 28楼 的帖子

各位辛苦了  特别是zljzsmzzx  用手机写了那么多代码  非常不容易

我已经找到替代的方法了 版主请锁此贴 至于28楼的代码 我测试了下

症状还是差不多,可能真的是电脑的问题,我在机房上网的 放在根目录下运行

没有任何反映

再次感谢

TOP

返回列表