|
本帖最后由 NicTense 于 2013-7-21 13:17 编辑
victor888 发表于 2013-7-20 08:40
请详细指点.
老大,别说指点啊,这样我都不好回复了
我用的远古时代的pecmd3.6,我不知道后面的版本是不是一样,这个版本会创建一堆system的用户变量
我好久没写批处理了,又全忘光了,刚本来以为10来分钟可以搞定,结果变量延迟和过程调用全没概念了,又重新学起。。。郁闷
最后,用了2个多小时才搞定
(补充一下:重新研究了一下,终于知道那些变量哪来的了,如果pecmd配置文件里有init cu,这些变量就存在了,新老版本都一样,也就是说,如果没有用到可以无视,只在盘符整理前用到这些变量的也可以无视,虽然那样整理后变量是错误的有点难看)
if defined newhddrv (
set totaldrv=%usbsys% %newhddrv% %dvddrv% %uhddrv% %usbrem% %wvbkdvd% %firadvd%
) else (
set totaldrv=%usbsys% %uhddrv% %usbrem% %dvddrv% %wvbkdvd% %firadvd%
)
set cdrom0=%dvddrv% %wvbkdvd% %firadvd%
set usb0=%usbrem%
set cdrom=
set usb=
:olddrv
set nk=!fulldrv:~%kk%,1!
if /i %1 neq !nk! (
set ordereddrv=!ordereddrv! %1: to !nk!:,
if "!cdrom0:%1=!" neq "!cdrom0!" set cdrom=!cdrom!!nk!
if "!usb0:%1=!" neq "!usb0!" set usb=!usb!!nk!
)
goto :eof
:mountbegin
set ordereddrv=!ordereddrv:to=!
set ordereddrv=!ordereddrv: =!
set ordereddrv=!ordereddrv:,= !
for %%a in (!ordereddrv!) do (
set oldnew=%%a
call :vid_drv !oldnew:~0,1! !oldnew:~-2,1!
)
for %%a in (!ordereddrv!) do (
set oldnew=%%a
mountvol !oldnew:~0,2! /d
)
for %%a in (!newvid!) do (
set eachnewvid=%%a
set tmpeachnewvid=!eachnewvid:~0,1!
if !tmpeachnewvid! neq { (
pecmd show !eachnewvid:~0,-1!,!eachnewvid:~-1!
) else (
mountvol !eachnewvid:~-1!: \\?\Volume!eachnewvid:~0,-1!\
)
)
set usb=%USBDRV%!usb!
for %%a in (cdrom usb) do call :fixvar %%a
goto :eof
:fixvar
set /a jj=0
:add1
set /a kk=jj+1
if "!%1:~%jj%,1!"=="" goto next1
if "%kk%"=="1" pecmd envi #%1=!%1:~%jj%,1!:
pecmd envi #%1%kk%=!%1:~%jj%,1!:
set /a jj+=1
goto add1
:next1
goto :eof |
评分
-
查看全部评分
|