[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
经过重新测试已经成功,上次没有成功应该是跟之前运行过批处理程序又把盘符改回来有关。

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

下帖中第一个for中括号里的$是转义符,即数字键6上的那个符号,¥是管道符号,回车键左边“\”键上的那个符号。我是用手机上的网,手机打不出这两个符号,所以楼主自己改下吧。

[ 本帖最后由 zljzsmzzx 于 2009-11-6 10:50 编辑 ]

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. exit
  9. :set
  10. for /f %%i in ('mountvol %1 /l') do (mountvol %1 /d&&mountvol %2 %%i)
复制代码

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

回复 21楼 的帖子

这样试试
  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
  16. pushd X:
  17. x:\*.exe
复制代码

TOP

回20楼

.楼主测试失败是因为原代码中一个copy命令不知为什么被替换掉了。现代码在19楼已修改。如果你要修改的盘是G盘和H盘,只要把批处理文件放到G盘下任意位置运行即可。如果还要执行其它命令就在call :set !drv%b%! Y:后加上cd/d x:,再在exit前加上自己要执行的命令就可以了。我测试了没问题。

TOP

回20楼

.楼主测试失败是因为原代码中一个copy命令不知为什么被替换掉了。现代码在19楼已修改。如果你要修改的盘是G盘和H盘,只要把批处理文件放到G盘下任意位置运行即可。如果还要执行其它命令就在call :set !drv%b%! Y:后加上cd/d x:,再在exit前加上自己要执行的命令就可以了。我测试了没问题。

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

楼主,你不要上来只说个不行啊什么的。你倒是说说哪不行了。是盘符依然没修改成功呢还是盘符改了但没重新启动那个程序呢?还有你的那个程序是在要修改盘符的那个移动磁盘里吗?这些你都要说清楚啊,你只一句不行我们就有得忙了,不但要找代码错在哪还得猜测你运行的时候错在哪。我每次给人写代码都经测试没问题后才会给出的。但我测试的环境和你使用的环境不同,所以每个问题都要你主动说清了我们才能针对你的使用环境修改代码,问一句答一句只会让你的问题越拖越久甚至没人愿意回答。

TOP

回复 26楼 的帖子

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

TOP

  1. @echo off
  2. if "%~1" neq "a" (set nowdrv=%cd:~0,2%&copy %~s0 "%temp%" >nul&cd/d "%temp%"&call %~nx0 a&exit)
  3. if /i "%nowdrv%" equ "c:" (echo,当前驱动器可能是系统分区,不可更改。&pause>nul&exit)
  4. setlocal enabledelayedexpansion
  5. for /f "delims=\" %%a in ('fsutil fsinfo drives^|find /v ""') do (
  6.     set/a n+=1
  7.     set drv=%%a
  8.     set drv!n!=!drv:~-2!
  9.     if /i "%nowdrv%" equ "!drv:~-2!" (set a=!n!&set/a b=!n!+1)
  10. )
  11. call :set !drv%a%! X:
  12. call :set !drv%b%! Y:
  13. cd/d x:
  14. taskkill /F /IM Vstart.exe
  15. start "" x:\Vstart.exe
  16. rem 如果只是运行这个程序而已就可以不用前面那句cd/d x:
  17. exit
  18. :set
  19. for /f %%i in ('mountvol %1 /L') do (mountvol %1 /d && mountvol %2 %%i)
复制代码
这次是在网吧里上了,测试过,没有问题,再不行的话那就是你电脑的个别问题了。
1

评分人数

TOP

回复 28楼 的帖子

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

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

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

没有任何反映

再次感谢

TOP

返回列表