无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: victor888
打印 上一主题 下一主题

【请转至新贴】盘符错乱调整批处理

[复制链接]
361#
发表于 2011-1-23 20:19:45 | 只看该作者
回复

使用道具 举报

362#
发表于 2011-1-23 22:16:51 | 只看该作者
嘿嘿,stop应该写成pause or wait
回复

使用道具 举报

363#
发表于 2011-1-24 08:10:15 | 只看该作者
我也没找到下载地址!
回复

使用道具 举报

364#
 楼主| 发表于 2011-1-26 23:58:55 | 只看该作者
我希望有反馈,无论成功与失败。
回复

使用道具 举报

365#
发表于 2011-1-27 08:52:40 | 只看该作者
有一次在pe下调整盘符,结果不能进系统。
回复

使用道具 举报

366#
发表于 2011-1-27 09:00:37 | 只看该作者
在WIN7下运行该程序,调整U盘盘符成功。(调整后U盘盘符为“U”)

[ 本帖最后由 lbz198 于 2011-1-27 14:36 编辑 ]

捕获.JPG (38.45 KB, 下载次数: 159)

捕获.JPG
回复

使用道具 举报

367#
发表于 2011-1-27 11:32:48 | 只看该作者
只改动
set AUTO=y
set USBDRV=z
两项,一切OK

如果把注释项(::开头的项)和ECHO开头的项去掉,就不正常,不知为什么
回复

使用道具 举报

368#
 楼主| 发表于 2011-1-27 13:48:01 | 只看该作者
按照说这两项根本是什么也不影响的,不过我发现一个问题,就是有的时候运行正常,再次运行,即两次间隔时间比较短,就会异常,我分析有可能是MOUNTVOL在进行分区调整后,有的影响没有消失造成。

楼上说的情况,你可以这样,把::行全部删除,在所有的echo前加rem和空格,或者::前也加rem和空格进行灭活来解决问题。
回复

使用道具 举报

369#
发表于 2011-1-27 14:42:40 | 只看该作者

回复 #368 victor888 的帖子

把::行全部删除,ECHO行不动,结果就成这样

和删除::行及ECHO行后的结果一样

[ 本帖最后由 snaketsg 于 2011-1-27 14:43 编辑 ]
回复

使用道具 举报

370#
发表于 2011-1-27 16:43:11 | 只看该作者
检测时多出个P盘,why?
一个网络盘y变成x盘

[ 本帖最后由 zhaohj 于 2011-1-27 16:45 编辑 ]

Snap1.jpg (112.49 KB, 下载次数: 172)

Snap1.jpg
回复

使用道具 举报

371#
 楼主| 发表于 2011-1-27 17:43:00 | 只看该作者
楼上,你的注册表里盘符读取的不对,我现在对PE1.X有点服了,这注册表怎么这么乱。

我说解决方法你自己修改吧:
放一个PE1.X所对应版本下的fsutil.exe进SYSTEM32目录就全解决了。
回复

使用道具 举报

372#
 楼主| 发表于 2011-1-27 17:45:14 | 只看该作者
原帖由 snaketsg 于 2011-1-27 14:42 发表
把::行全部删除,ECHO行不动,结果就成这样
112214
和删除::行及ECHO行后的结果一样


如果你什么代码也没动,仅是删除行的话,是不会出错的。

其实你完全没有必要去删除这些行,完全可以采用后台最小化的方式运行: !exec xyz...
回复

使用道具 举报

373#
发表于 2011-1-27 20:36:31 | 只看该作者
虽然本人从没遇到盘符错乱的情况,但是还是要收藏,给别人修复系统,肯定是用得上的。
回复

使用道具 举报

374#
发表于 2011-1-27 20:40:57 | 只看该作者
忘了问一声,两块或以上的内置硬盘盘符错乱(跳线问题或别的问题引起,有2个或以上的分区处于激活状态),本工具可以解决吗?
回复

使用道具 举报

375#
 楼主| 发表于 2011-1-27 20:55:54 | 只看该作者
这个盘符调整和是不是激活没有关系,可以调整的。
回复

使用道具 举报

376#
发表于 2011-1-27 22:14:11 | 只看该作者
报告个问题,不固定U盘盘符的话会丢失光驱,光驱原盘符是G,U盘抢G盘符后光驱不显示
回复

使用道具 举报

377#
 楼主| 发表于 2011-1-28 07:40:41 | 只看该作者
你给一个非自动运行的截图,顺便问一句,你的光驱是USB光驱吗?
回复

使用道具 举报

378#
发表于 2011-1-28 14:14:54 | 只看该作者
新版实机测试

三个文件放到内核 SYSTEM32文件夹下,

PECMD.INI中加入 EXEC =!    启动过程中自动整理

结果:启动后,光驱变为C盘,,,0111版同样条件下正常
回复

使用道具 举报

379#
发表于 2011-1-28 14:22:17 | 只看该作者
好东西 下来试试看
学习中。。。。。
回复

使用道具 举报

380#
 楼主| 发表于 2011-1-28 15:51:14 | 只看该作者
原帖由 网虫2008 于 2011-1-28 14:14 发表
新版实机测试

三个文件放到内核 SYSTEM32文件夹下,

PECMD.INI中加入 EXEC =!    启动过程中自动整理

结果:启动后,光驱变为C盘,,,0111版同样条件下正常


不要在PECMD.INI中运行,PE启动后运行,给截图。
回复

使用道具 举报

381#
发表于 2011-2-9 12:35:53 | 只看该作者

回复 #1 victor888 的帖子

我不用最新版本的 可以进PE  进PE后点用这个新版本 的就会出现这个
批处理 暂停在这里 找了一下  发现 那里不知道 多了 个 pause命令
希望 大大改正 如果还是没改进 的话 只能用 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=185411&highlight=%C5%CC%B7%FB 这个磁盘理顺家 固定USB盘符了
具体看我  截图 还是用以前版本的算了


[ 本帖最后由 yanglin 于 2011-2-9 12:39 编辑 ]
回复

使用道具 举报

382#
发表于 2011-2-9 14:56:31 | 只看该作者
楼上的,从你注册的日期看也不算短了,怎还犯这样低级的错误呢!
你的问题批处理里有说明呀!鸟文看不懂,你就不会把楼主的更新说明看一遍?

典型的,自个失眠说床不好!
回复

使用道具 举报

383#
发表于 2011-2-9 15:39:34 | 只看该作者
请问楼主:
源程序最开头的那几句,把3个文件都复制到一个新建的temp目录有何特殊用意吗?
如果3个文件本来就在同一目录下,比如system32下,是不是就不需要这么做了?

另外,建议变量名称不要用 tmp和temp ,因为这2个是系统临时目录的变量
回复

使用道具 举报

384#
 楼主| 发表于 2011-2-9 16:00:15 | 只看该作者
如果3个文件本来就在系统盘符的SYSTEM32目录下,确实可以不用建目录以及最后再去删除。这么做主要目的是防止程序因为盘符转换而找不到。

变量名这点,你提的很好,我没有想到,只是为记忆方便考虑了,虽然不影响什么,但是还是不要和系统变量一致为好。

如果你感兴趣,我们可以一同进一步完善它。

谢谢!
回复

使用道具 举报

385#
发表于 2011-2-9 20:20:22 | 只看该作者

回复 #384 victor888 的帖子

我没怎么去仔细研究过这个整理的原理,所以要说到一起完善它,貌似我还没这水平,目前也没那么时间可以去研究弄懂这其中的原理

我只能先忽略原理这一层,单纯从批处理的角度看看有没有什么笔误之类的

有一个地方要请教一下,大概是源代码中间的位置

  set tmphddrv=
  if not defined uhddrv (
    for %%g in (!hddrv%%a!) do (
      set tmp=%%g
      if !tmp! equ !tmp:~-3! set tmphddrv=!tmphddrv! %%g
    )
  )
  set hddrv=!hddrv! !tmphddrv!
  set ret=
)

set hddrv=!hddrv:\=\ !
for %%a in (!hddrv!) do (
  set tmp=%%a
  set tmp=!tmp:~0,2!
  call :vid_path !temphddrv!\
  set hdvid=!hdvid! !output!
  set newhddrv=!newhddrv! !tmp!
)


请问这个蓝色的变量和上面红色的是同一个吗,如果是的话,那就是笔误了,下面的多了一个字母

还有1个问题请教一下

if not exist %systemroot%\temp md %systemroot%\temp
if not exist %systemroot%\temp\%~nx0 (
  copy %0 %systemroot%\temp\ /y >nul
  copy mbrfix.exe %systemroot%\temp\ /y >nul 2>&1
  if not exist %systemroot%\system32\mountvol.exe copy mountvol.exe %systemroot%\temp\ /y >nul 2>&1
  pushd %systemroot%\temp\
  call %~nx0
  exit
)

这里的&1是什么含义啊?

[ 本帖最后由 NicTense 于 2011-2-9 21:16 编辑 ]
回复

使用道具 举报

386#
发表于 2011-2-9 20:26:32 | 只看该作者
下载更新一下了,谢谢分享了。
回复

使用道具 举报

387#
发表于 2011-2-9 20:41:22 | 只看该作者

回复 #385 NicTense 的帖子

看了一下似乎是笔误,满篇的tmphddrv只有一个temphddrv
回复

使用道具 举报

388#
 楼主| 发表于 2011-2-9 21:18:50 | 只看该作者
感谢NicTense (逆天使) 以及楼上

call :vid_path !temphddrv!\
  set hdvid=!hdvid! !output!

这两行没有用,忘记删除的部分,什么也不影响,待下次更新一并解决,或者下载者可以自行解决。
回复

使用道具 举报

389#
发表于 2011-2-9 22:00:08 | 只看该作者

测试报告:

一、三个文件放到了内核SYSTEM32下,用.INI的EXEC参数调用,测试机器为SONY笔记本。

二、我现在的PE用的是0111版,理顺过程序中出现无法正常调用问题,,后在批处理中加入
PUSHD %~dp0
CD /D "%CD%"
后一切正常。

三、最新版测试,启动到桌面后执行,C盘符丢失,,,,启动过程中自动运行时光驱变为C

1.原始状态图:



2.启动到桌面后运行结果:




3.启动过程序中自动运行结果:
回复

使用道具 举报

390#
发表于 2011-2-10 00:56:51 | 只看该作者
关于这段代码


:fsutil
  for /f "tokens=*" %%a in ('fsutil fsinfo drives') do set str=%%a
    :lp
  for /f "tokens=1,*" %%i in ("%str%") do (
  set str2=%%i
  set str2=!str2:~-3!
  if !str2! equ %%i set ALLDRV=%ALLDRV% %%i
  set str=%%j
  goto lp
  )
goto :eof



我发现 fsutil 这个小工具的输出信息,不同版本是不同的

在win7里,其实这样子就可以获得 ALLDRV 了

:fsutil
for /f "tokens=1,*" %%a in ('fsutil fsinfo drives') do set ALLDRV=%%b
goto :eof


可是在pe1.x里,我只在tangope里测试过,这样的代码得到的是第一个盘符,一般是 C:\
也就是说,fsutil的输出文字,盘符后面不是空格,而是一个特殊字符,我估计是eof 或者换行符
用原来的代码得到的一样是第一个盘符
结果就悲剧了

[ 本帖最后由 NicTense 于 2011-2-10 00:57 编辑 ]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-14 22:34

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表