无忧启动论坛

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

【2022-07-15】盘符错乱调整批处理

    [复制链接]
331#
发表于 2013-3-21 10:39:08 | 只看该作者
回复

使用道具 举报

332#
发表于 2013-3-21 13:31:23 | 只看该作者
原帖由 victor888 于 2013-3-21 10:14 发表
我想想办法,呵呵,我可没说答应你啊。


非常感谢您的回复!
回复

使用道具 举报

333#
发表于 2013-3-22 11:41:31 | 只看该作者
测试了我心如水及天意几位大师的WIN8PE加入老师的盘符错乱调整批处理,都可完美正常运作,但测试一个纯64位元的WIN8PE(阿弥陀佛老大的)显示还是不正确,不知是否个人操作有误?
回复

使用道具 举报

334#
 楼主| 发表于 2013-3-22 12:28:31 | 只看该作者
原帖由 2011YEH 于 2013-3-22 11:41 发表
测试了我心如水及天意几位大师的WIN8PE加入老师的盘符错乱调整批处理,都可完美正常运作,但测试一个纯64位元的WIN8PE(阿弥陀佛老大的)显示还是不正确,不知是否个人操作有误?


SET AUTO=N

给出PE下运行的结果。
回复

使用道具 举报

335#
发表于 2013-3-22 19:53:32 | 只看该作者
我是直接修改PECMD.INI加入盘符错乱调整批处理,因此不论是否选择SET AUTO=N或SET AUTO=Y,其结果在64位元都是相同的,其中PECMD.INI的修改方式是参考之前测试成功的32位元WIN8PE,附图中的32位元的WIN8PE-32是使用我心如水大师的WIN8PE截图,其盘符位置顺序是正确的

pecmd.ini.jpg (39.92 KB, 下载次数: 160)

pecmd.ini.jpg

WIN8PE-64.jpg (39.63 KB, 下载次数: 155)

WIN8PE-64.jpg

WIN8PE-32.jpg (39.8 KB, 下载次数: 160)

WIN8PE-32.jpg
回复

使用道具 举报

336#
 楼主| 发表于 2013-3-22 20:00:08 | 只看该作者
给软件运行结果截图。
回复

使用道具 举报

337#
发表于 2013-3-22 20:14:36 | 只看该作者
单独执行ORDERDRV.CMD时,画面一闪而过,来不及裁图!我再试试是否有其他方法可以截图。
最后于dos下截图如下:

[ 本帖最后由 2011YEH 于 2013-3-22 20:26 编辑 ]

dos下截图.jpg (39.62 KB, 下载次数: 160)

dos下截图.jpg
回复

使用道具 举报

338#
发表于 2013-3-29 19:40:26 | 只看该作者
双硬盘盘符错乱的原因找到:

换用了INTEL SSD硬盘测试


SSD盘符正确识别为C盘


出问题的固态硬盘是建兴的msata SSD


看了版主的说明:盘符批处理

硬盘盘符顺序:SSD硬盘(DISKID值含有“SSD”字串)->其他硬盘->FRADISK虚拟出的硬盘


intel的SSD叫  SSDSA2CW080G3
建兴的SSD叫   LITEONIT LMT-64M6M


能否帮我将LITEONIT 关键字 加进盘符顺序里呢?


或者能否和我说一下orderdrv.cmd(是否在这里加?)里如何加需要的“XXX”字串 来识别,以后换了别的牌子的固态硬盘自己也可以加了,呵呵。

[ 本帖最后由 2013bug1977 于 2013-3-29 19:54 编辑 ]
回复

使用道具 举报

339#
发表于 2013-3-29 20:06:24 | 只看该作者
echo Fixed USB !gptmbr! disk !nn! mount path: !hddrv!
            ) else (
              set hdtype=!hdtype:SSD=!
              if !hdtype! neq %%b (
                set /a qq+=1

我把SSD改成


echo Fixed USB !gptmbr! disk !nn! mount path: !hddrv!
            ) else (
              set hdtype=!hdtype:LITEON=!
              if !hdtype! neq %%b (
                set /a qq+=1


启动后C盘是LITEON固态硬盘了。。成功了

但是换用INTEL SSD又乱了。。。。INTEL SSD变成了E盘

怎么添加多关键字识别呢

这样我就可以把镁光,建兴,浦科特等SSD的关键字都加进去。

[ 本帖最后由 2013bug1977 于 2013-3-29 21:23 编辑 ]
回复

使用道具 举报

340#
发表于 2013-4-1 17:11:55 | 只看该作者
版主你好 还是有个小问题,向你请教。固态硬盘分区 C和D区,机械硬盘E和F,光驱G盘,如果不多加SSD识别,盘符正常。但是批处理加了多个SSD的型号后,比如SSD和一个建兴的LITEON,固态硬盘变成C和G盘,机械硬盘变成D和E,光驱变F盘。加了后SSD的第2个分区就乱了。
回复

使用道具 举报

341#
发表于 2013-4-1 17:46:08 | 只看该作者
) else (
              set hdtype=!hdtype:LITEON=!
              if !hdtype! neq %%b (
                set /a qq+=1
                echo Solid State !gptmbr! Hard disk !qq! mount path: !hddrv!
                if !qq!==1 (
                  for %%e in (!strdrv!) do (
                    set "eachdrv=%%e"
                    if "!eachdrv:~-1!"=="$" set actdrv=!eachdrv:~1,2!
                  )
                )
                set ssddrv=!ssddrv! !hddrv!



固态硬盘型号是LITEON,把原先的批处理里的SSD改成LITEON,红色部分是修改部分。
固态硬盘分2个区。正常识别排序。

以下截图  C和D是固态硬盘 E和F是机械硬盘

[ 本帖最后由 2013bug1977 于 2013-4-1 18:28 编辑 ]

1.jpg (20.51 KB, 下载次数: 146)

1.jpg
回复

使用道具 举报

342#
发表于 2013-4-1 17:52:00 | 只看该作者
本帖最后由 2013bug1977 于 2013-4-20 14:24 编辑

) else (
              set hdtype=!hdtype:SSD=!
              if !hdtype! neq %%b (
                set /a qq+=1
                echo Solid State !gptmbr! Hard disk !qq! mount path: !hddrv!
                if !qq!==1 (
                  for %%e in (!strdrv!) do (
                    set "eachdrv=%%e"
                    if "!eachdrv:~-1!"=="$" set actdrv=!eachdrv:~1,2!
                  )
                )
             ) else (
              set hdtype=!hdtype:LITEON=!
              if !hdtype! neq %%b (
                set /a kk+=1
                echo Solid State !gptmbr! Hard disk !kk! mount path: !hddrv!
                if !kk!==1 (
                  for %%e in (!strdrv!) do (
                    set "eachdrv=%%e"
                    if "!eachdrv:~-1!"=="$" set actdrv=!eachdrv:~1,2!
                  )
                )
                set ssddrv=!ssddrv! !hddrv!
              ) else (
                set /a ll+=1
                if !ll!==1 (
                  if not defined actdrv (
                    for %%e in (!strdrv!) do (
                      set "eachdrv=%%e"
                      if "!eachdrv:~-1!"=="$" set actdrv=!eachdrv:~1,2!
                    )
                  )
                )
                set thddrv=!thddrv! !hddrv!
                echo Internal !gptmbr! hard disk !ll! mount path: !hddrv!               
                )
              )
            )
          )
        )
      )
    )
  )
)
set newhddrv=!ssddrv! !thddrv! !firadrv!
set allhddrv=!newhddrv! !uhddrv!



保留原先SSD字串上增加一行LITEON字串,) 也加为9个,原先是8个),红色文字是增加后修改的内容,固态硬盘变成C和G盘,机械硬盘变成D和E,光驱变F盘。SSD的第2个分区就乱了。变G盘了。 发现WIN7也是这样的,最后一个SSD盘符跑最后去了,那就和批处理没关系了,反正WIN7也这样。

如果固态硬盘只分一个区,均可正常调整为C盘。

[ 本帖最后由 2013bug1977 于 2013-4-1 17:57 编辑 ]

2.jpg (20.2 KB, 下载次数: 136)

2.jpg
回复

使用道具 举报

343#
发表于 2013-4-14 15:33:45 | 只看该作者
本帖最后由 2013bug1977 于 2013-4-20 15:27 编辑

又发现新问题了,用了多个SSD字符后,

1:PE ISO放在U盘启动,进PE 光驱盘符在。
2:PE ISO放在光盘启动,插一个U盘,进PE,光驱盘符在。
3:PE ISO放在光盘启动,不接任何外设,进PE光盘没了,进计算机,管理,磁盘管理,可以看到光驱存在,但是没有盘符分配。



如果用单个SSD识别字符就不存在这些问题。


现在用的是set AUTO=Y  固态硬盘第1个分区是C盘。出现的以上问题

发现 set AUTO=N  这样设置不管什么情况下光驱盘符都有,但是机械硬盘的第一个分区又变C盘了。


结论:用了多个SSD,只有U盘才能激活光盘盘符分配。奇怪,如果不用U盘激活,那就要用set AUTO=N  参数,但是C盘变机械硬盘。
回复

使用道具 举报

344#
发表于 2013-4-14 23:44:26 | 只看该作者
还在更新啊.
回复

使用道具 举报

345#
发表于 2013-6-6 18:28:24 | 只看该作者
系统内19个盘以上DRVTYPE就会出错
回复

使用道具 举报

346#
 楼主| 发表于 2013-6-6 20:11:23 | 只看该作者
如果DRVTYPE不出错,那么在我的批处理中把要保留的盘符去除就行了。
回复

使用道具 举报

347#
发表于 2013-6-6 20:20:31 | 只看该作者
victor888 发表于 2013-6-6 20:11
如果DRVTYPE不出错,那么在我的批处理中把要保留的盘符去除就行了。

Story since link here :
http://bbs.wuyou.net/forum.php?m ... &fromuid=345682

回复

使用道具 举报

348#
发表于 2013-6-6 21:46:03 | 只看该作者
victor888 发表于 2013-6-6 20:11
如果DRVTYPE不出错,那么在我的批处理中把要保留的盘符去除就行了。

主要是DRVTYPE.EXE出错了。我用的是2013年2月22号的版本,应该是最新的吧
回复

使用道具 举报

349#
 楼主| 发表于 2013-6-7 06:03:46 | 只看该作者
hhh333要给出drivetype的运行截图,同时把问题反馈给作者。
回复

使用道具 举报

350#
发表于 2013-6-7 06:40:10 | 只看该作者
victor888 发表于 2013-6-7 06:03
hhh333要给出drivetype的运行截图,同时把问题反馈给作者。

1、启动时

2、进入后(光盘没有盘符)

3、进入后运行(还是出错)


4、启动时选择跳过,则如下图,光盘有盘符
回复

使用道具 举报

351#
 楼主| 发表于 2013-6-7 21:32:06 | 只看该作者
只能等CLONCECD出山。
回复

使用道具 举报

352#
 楼主| 发表于 2013-6-12 09:16:44 | 只看该作者
更新了,你们测试吧,呵呵,SKYPE也更新试试吧。
回复

使用道具 举报

353#
发表于 2013-6-12 10:16:34 | 只看该作者
马上测试
回复

使用道具 举报

354#
发表于 2013-6-12 10:42:00 | 只看该作者
victor888 发表于 2013-6-12 09:16
更新了,你们测试吧,呵呵,SKYPE也更新试试吧。


老师帮忙看一下,如果此工具加在这个“盘符任意换”程序中
如何修改一下?



@echo off
SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION
cls

pushd %~dp0
if %~d0 neq %systemdrive% (
  if not exist %temp%\%~nx0 (
    copy %0 %temp%\ /y >nul
    copy fsutil.exe %temp%\ /y >nul 2>&1
    copy mountvol.exe %temp%\ /y >nul 2>&1
    copy more.com %temp%\ /y >nul 2>&1
    pushd %temp%\
    call %~nx0
    exit
  )
)

set ver=11-09-2012 Created by victor888.

::取得所有盘符
call :fsutil
set ALLDRV=!ALLDRV:\=!
set ALLDRV=!ALLDRV: =!
set ALLDRV=!ALLDRV::= !

::取得有装入点的盘符
FOR /F %%a in ('mountvol ^|find "\"') do set mtvdrv=!mtvdrv! %%a

::get unique drive letters which contain ":"
set mtvdrv=%mtvdrv: =%
set mtvdrv=%mtvdrv:\\?\Volume= %
set mtvdrv=%mtvdrv:}\=}%

for %%a in (%mtvdrv%) do (
  for /f "delims=} tokens=1,2" %%b in ("%%a") do (
    set drv=%%c
    set ttmp=%%c
    set ttmp=!ttmp:~-2,1!
    if !ttmp! equ : set mtdrv=!mtdrv! !drv:~0,2!
  )
)

if defined mtdrv (
  set mtdrv=!mtdrv: =!
  set mtdrv=!mtdrv::= !
)

::所有盘符-有装入点的盘符=虚拟盘符
set virdrv=%ALLDRV%
for %%a in (%mtdrv%) do (
  set virdrv=!virdrv:%%a=!
)

echo.
echo             盘符随意换!ver!
echo.

:input
set drvstr=
set newdrvstr=
set olddrv=
set newdrv=
set errolddrv=
set errvirdrv=
set errnewdrv=
set leftdrv=
set oldexist=
set newexist=
set /a nn=-1
echo.
set /p drvstr=请输入原盘符及新盘符,逗号分隔成对盘符(如de,fg...,df为原盘符,eg为新盘符):
echo.

set drvstr=!drvstr:,=,!
set drvstr=!drvstr:,= !

::提取原盘符和新盘符
::盘符必须成对存在
::盘符不能是非英文字母
for %%a in (!drvstr!) do (
  set eachstr=%%a
  set old=!eachstr:~0,1!
  set new=!eachstr:~1,1!
  for %%b in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do (
    if /i "%%b" equ "!old!" set oldexist=yes
    if /i "%%b" equ "!new!" set newexist=yes
  )
  if "!oldexist!" neq "yes" echo 原盘符!old!不是英文字母!&goto :input
  if "!newexist!" neq "yes" echo 新盘符!new!不是英文字母!&goto :input
  if not defined new (
    echo 与原盘符!old!匹配的新盘符不存在!
    goto :input
  )

  set extradrv=!eachstr:~2,1!
  if not defined extradrv (
    set olddrv=!olddrv! !old!
    set newdrv=!newdrv! !new!
    set newdrvstr=!newdrvstr!,!eachstr:~0,1!-^>!eachstr:~1,1!
    set /a nn+=1
  ) else (
    echo !extradrv!为多录入内容,请重新录入!
    goto :input
  )
)


::系统盘符不能更换
set tmpsys=!systemdrive:~0,1!
if /i not !olddrv!==!olddrv:%tmpsys%=! (
  echo 系统盘符%systemdrive%不能更换!
  goto :input
)

::虚拟盘符不能更换
if defined virdrv (
  for %%a in (!virdrv!) do (
    if /i not !olddrv!==!olddrv:%%a=! (
      set errvirdrv=!errvirdrv! %%a
    )
  )
)

if defined errvirdrv (
  echo 虚拟盘符!errvirdrv!不能更换!
  goto :input
)

::原盘符不存在
for %%a in (!olddrv!) do (
  if /i !alldrv!==!alldrv:%%a=! (
    set errolddrv=!errolddrv! %%a
  )
)

if defined errolddrv (   
  echo 输入的原盘符!errolddrv! 不存在!
  goto :input
)


::原盘符有重复
for %%a in (%olddrv%) do (
  set /a n=0
  for %%b in (%olddrv%) do (
    if %%a equ %%b (
      set /a n+=1
      if !n! GTR 1 (
        echo 原盘符"%%a"有重复,请检查!
        goto :input
      )
    )
  )
)

::新盘符有重复
for %%a in (%newdrv%) do (
  set /a m=0
  for %%b in (%newdrv%) do (
    if %%a equ %%b (
      set /a m+=1
      if !m! GTR 1 (
        echo 新盘符"%%a"有重复,请检查!
        goto :input
      )
    )
  )
)

::新盘符与不更换的已有盘符冲突
set leftdrv=!alldrv!
for %%a in (%olddrv%) do set leftdrv=!leftdrv:%%a=!

for %%a in (!newdrv!) do (
  if /i not !leftdrv!==!leftdrv:%%a=! (
    set errnewdrv=!errnewdrv! %%a
  )
)

if defined errnewdrv (   
  echo 输入的新盘符!errnewdrv! 已经存在,请重新输入!
  goto :input
)

set /p dogo=确认要进行如下调换!newdrvstr! (y/n)?
if /i !dogo! equ y (
  call :mountbegin
) else (
  echo 用户取消!
  exit
)

if exist %temp%\mountvol.exe del %temp%\mountvol.exe
if exist %temp%\fsutil.exe del %temp%\fsutil.exe
if exist %temp%\more.com del %temp%\more.com
if exist %temp%\%~nx0 del %temp%\%~nx0

echo 更换盘符成功!
pause
goto :end

:mountbegin
for %%a in (%olddrv%) do (
  mountvol %%a: /d
)

set olddrv=!olddrv: =!
set newdrv=!newdrv: =!

for /l %%a in (0,1,!nn!) do (
  set old=!olddrv:~%%a,1!
  set new=!newdrv:~%%a,1!
  for %%b in (%mtvdrv%) do (
    set amp=%%b
    set vid=\\?\Volume!amp:~0,38!
    set drv=!amp:~38,1!
    if /i !drv!==!old! (
      mountvol !new!: !vid!
    )
  )
)
goto :eof

:fsutil
  for /f "delims=:\ " %%a in ('fsutil.exe fsinfo drives^|more') do (
    set tmpdrv=%%a
    if !tmpdrv:~-2! equ %%a set ALLDRV=!ALLDRV! %%a:
  )
goto :eof

:end
回复

使用道具 举报

355#
发表于 2013-6-12 10:46:29 | 只看该作者


6月12日报告结果:
机器情况:ACER S3,机械硬盘+SSD混合。
其中WINDOWS下,SSD为系统盘C盘。机械盘为:D(办公)、E(工作)、F(娱乐)、G(个人);另有2个隐藏盘。

PE下用盘符调整工具结果如下:
C盘为系统盘。
D\E盘为隐藏盘。
F(个人)。
G(办公)。
H(工作)。
I(娱乐)。
回复

使用道具 举报

356#
发表于 2013-6-12 11:15:28 | 只看该作者
下载来更新
回复

使用道具 举报

357#
 楼主| 发表于 2013-6-12 19:37:34 | 只看该作者
HB天意 发表于 2013-6-12 10:46
6月12日报告结果:
机器情况:ACER S3,机械硬盘+SSD混合。
其中WINDOWS下,SSD为系统盘C盘。机械盘为 ...

这个结果是正确的,谢谢版主报告。
回复

使用道具 举报

358#
 楼主| 发表于 2013-6-12 19:38:39 | 只看该作者
糊涂 发表于 2013-6-12 10:42
老师帮忙看一下,如果此工具加在这个“盘符任意换”程序中
如何修改一下?

兄弟,这个更改需要较多的精力,我目前精力不允许,不好意思,等我有时间的一并改了。
回复

使用道具 举报

359#
发表于 2013-6-12 19:54:11 | 只看该作者
skype native 03PE 硬盘不能占据C:的问题解决了。病因在native 03PE 一级内核。
回复

使用道具 举报

360#
 楼主| 发表于 2013-6-12 19:56:28 | 只看该作者
chiannet 发表于 2013-6-12 19:54
skype native 03PE 硬盘不能占据C:的问题解决了。病因在native 03PE 一级内核。

解决就好,我一直在用你的PE,希望今天能更新。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-10 07:42

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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