无忧启动论坛

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

[更新376#2825]PECMD2012.1.80.13_Win32_64.多窗口多线程.裸机系统2.3.3.1+18M酷M...

    [复制链接]
10591#
 楼主| 发表于 2015-8-23 03:36:49 | 只看该作者
hhh333 发表于 2015-8-22 22:42
试了,前景色没有效果

给个图看看。

点评

Win7下测试: [attachimg]223572[/attachimg] [attachimg]223573[/attachimg]  详情 回复 发表于 2015-8-23 06:49
回复

使用道具 举报

10592#
发表于 2015-8-23 06:49:16 | 只看该作者


Win7下测试:



点评

1:新版, 开启XP视觉,也可以设置前景色。 就是 风格有点不同。 所以,如果指定前景色, 都要制定。 2:PABR加了个-smooth开关, 强制为2000的光滑模式。 3:效果对比程序及效果: WIN1 _SUB WIN1,W287H36  详情 回复 发表于 2015-8-23 09:58
开启XP世界效果后,的确无效。 那就还是用LABE组合吧。 否则改得不标准,出现风格不一致,得不尝失。  详情 回复 发表于 2015-8-23 07:59
回复

使用道具 举报

10593#
 楼主| 发表于 2015-8-23 07:59:22 | 只看该作者

开启XP世界效果后,的确无效。
那就还是用LABE组合吧。

否则改得不标准,出现风格不一致,得不尝失。
回复

使用道具 举报

10594#
 楼主| 发表于 2015-8-23 09:58:04 | 只看该作者
本帖最后由 mdyblog 于 2015-8-23 10:00 编辑


1:新版, 开启XP视觉,也可以设置前景色。 就是 风格有点不同。
所以,如果指定前景色, 都要制定。

2:PABR加了个-smooth开关, 强制为2000的光滑模式。

3:效果对比程序及效果:
WIN1
_SUB WIN1,W287H362,新窗口1,
    GROU GROU1,L41T23W160H76,GROU1,,#0xFF,32
    GROU GROU2,L40T115W162H70,GROU2,,0xFF00#0xFF,32
    PBAR         PBAR1,L42T228W167H15,50
    PBAR -smooth PBAR1,L42T258W167H15,50
_END


没指定前景色, 框线比较淡雅,圆角(XP下,win7有不同)。

还是组合模式好看点。 白忙乎。

点评

最新版PECMD64 [attachimg]223619[/attachimg] [attachimg]223620[/attachimg] [attachimg]223621[/attachimg]  详情 回复 发表于 2015-8-23 12:58
回复

使用道具 举报

10595#
发表于 2015-8-23 12:58:30 | 只看该作者
mdyblog 发表于 2015-8-23 09:58
1:新版, 开启XP视觉,也可以设置前景色。 就是 风格有点不同。
所以,如果指定前景色, 都要制定。
...

最新版PECMD64





点评

有个变量没初始化。 哦。重新下载最新版本吧。  详情 回复 发表于 2015-8-23 13:18
回复

使用道具 举报

10596#
 楼主| 发表于 2015-8-23 13:18:56 | 只看该作者
本帖最后由 mdyblog 于 2015-8-23 13:22 编辑

新加的背景色变量没初始化(随机地当作黑背景了)。
哦。重新下载最新版本吧。

点评

最新版正常了  详情 回复 发表于 2015-8-23 17:05
回复

使用道具 举报

10597#
发表于 2015-8-23 13:33:12 | 只看该作者
既然这样,那就还回到从前吧,我用组合模式算了,这个功能建议取消
回复

使用道具 举报

10598#
发表于 2015-8-23 13:44:59 | 只看该作者
试了,最新版效果可以了呀,怎么说是白忙活呢?
回复

使用道具 举报

10599#
发表于 2015-8-23 17:05:14 | 只看该作者
mdyblog 发表于 2015-8-23 13:18
新加的背景色变量没初始化(随机地当作黑背景了)。
哦。重新下载最新版本吧。

最新版正常了
回复

使用道具 举报

10600#
发表于 2015-8-25 11:56:18 | 只看该作者
老大,disk排序还要改进,我用DISK  ,,,1,?:,0x10,其他暂时无问题,但如果有光驱,盘符就不变,因而将硬盘的盘符中断了。

原则上它应该排到硬盘后面。

点评

有些PE是光盘启动, 改变这个光盘盘符,有问题吧。 比如你的PE,其中有个光盘运行的PE。  详情 回复 发表于 2015-8-25 12:11
回复

使用道具 举报

10601#
 楼主| 发表于 2015-8-25 12:11:50 | 只看该作者
本帖最后由 mdyblog 于 2015-8-25 12:13 编辑
hhh333 发表于 2015-8-25 11:56
老大,disk排序还要改进,我用DISK  ,,,1,?:,0x10,其他暂时无问题,但如果有光驱,盘符就不变,因而将硬盘 ...


有些PE是光盘启动, 改变这个光盘盘符,有问题吧。

比如你的PE航母,其中有个光盘运行的PE。

哪些Native 运行的,也是ISO, 估计不能改变盘符吧

点评

这个应该没有关系,以前排序一直是光盘排在硬盘后面的,因初始是载入内核的,这个时候不存在盘符一说。 进系统后再排序对启动是无影响的,这个与移动硬盘、U盘是一样的道理,虽然从这些设备启动,但盘符是可以重排  详情 回复 发表于 2015-8-25 12:27
回复

使用道具 举报

10602#
发表于 2015-8-25 12:27:24 | 只看该作者
mdyblog 发表于 2015-8-25 12:11
有些PE是光盘启动, 改变这个光盘盘符,有问题吧。

比如你的PE航母,其中有个光盘运行的PE。

这个应该没有关系,以前排序一直是光盘排在硬盘后面的,因初始是载入内核的,这个时候不存在盘符一说。
进系统后再排序对启动是无影响的,这个与移动硬盘、U盘是一样的道理,虽然从这些设备启动,但盘符是可以重排的。与启动不相干。

点评

NATIVE是2级内核 一级内核中固定了该光盘盘符, 2级内核的PECMD.ini再修改该盘符,很可能有问题。  详情 回复 发表于 2015-8-25 12:54
回复

使用道具 举报

10603#
 楼主| 发表于 2015-8-25 12:54:33 | 只看该作者
hhh333 发表于 2015-8-25 12:27
这个应该没有关系,以前排序一直是光盘排在硬盘后面的,因初始是载入内核的,这个时候不存在盘符一说。
...

NATIVE是2级内核
一级内核中固定了该光盘盘符, 2级内核的PECMD.ini再修改该盘符,很可能有问题。

点评

刚才试了一下原来的系统,硬盘设了一个隐藏分区,不理顺光盘E,理顺为F,对native的启动与使用无影响。二级内核在光盘上的。  详情 回复 发表于 2015-8-25 13:21
native,本来就是一个很少用的东西,我测试一下以前的情况。  详情 回复 发表于 2015-8-25 13:09
回复

使用道具 举报

10604#
发表于 2015-8-25 13:09:39 | 只看该作者
mdyblog 发表于 2015-8-25 12:54
NATIVE是2级内核
一级内核中固定了该光盘盘符, 2级内核的PECMD.ini再修改该盘符,很可能有问题。

native,本来就是一个很少用的东西,我测试一下以前的情况。
回复

使用道具 举报

10605#
发表于 2015-8-25 13:21:27 | 只看该作者
本帖最后由 hhh333 于 2015-8-25 13:26 编辑
mdyblog 发表于 2015-8-25 12:54
NATIVE是2级内核
一级内核中固定了该光盘盘符, 2级内核的PECMD.ini再修改该盘符,很可能有问题。


刚才试了一下原来的系统,硬盘设了一个隐藏分区,不理顺光盘E,理顺为F,对native的启动与使用无影响。二级内核在光盘上的。说明这个理顺根本对nativePE也是无影响的。

点评

你将关盘的盘符 换下 试试, 看看。  详情 回复 发表于 2015-8-25 13:35
回复

使用道具 举报

10606#
 楼主| 发表于 2015-8-25 13:35:13 | 只看该作者
hhh333 发表于 2015-8-25 13:21
刚才试了一下原来的系统,硬盘设了一个隐藏分区,不理顺光盘E,理顺为F,对native的启动与使用无影响。 ...


你将光盘的盘符 换下 试试, 看看。

点评

Native的挂载可以是基于设备的,不基于盘符。看起来是盘符。 我又试了二级内核中的程序,是可以运行的。说明没影响  详情 回复 发表于 2015-8-25 13:42
选择理顺就是将光盘原来的盘符E:换成了F:,没有有影响  详情 回复 发表于 2015-8-25 13:40
回复

使用道具 举报

10607#
发表于 2015-8-25 13:40:03 | 只看该作者
mdyblog 发表于 2015-8-25 13:35
你将光盘的盘符 换下 试试, 看看。

选择理顺就是将光盘原来的盘符E:换成了F:,没有有影响
回复

使用道具 举报

10608#
发表于 2015-8-25 13:42:27 | 只看该作者
mdyblog 发表于 2015-8-25 13:35
你将光盘的盘符 换下 试试, 看看。

Native的挂载可以是基于设备的,不基于盘符。看起来是盘符。
我又试了二级内核中的程序,是可以运行的。说明没影响
回复

使用道具 举报

10609#
发表于 2015-8-25 14:03:49 | 只看该作者
这是不理顺的:

这是运行理顺程序后的:

可见理顺后挂载的程序运行没有问题
均在纯内核下操作。

点评

还有 imdisk盘符怎么排, 整个流程什么样的?  详情 回复 发表于 2015-8-25 15:28
这样的问题: 1级内核: NATIVE光盘M: 加载M:\NV03.WIM 到 {PATHX} 2级内核: M:改为O: 这{PATHX} 还是正常的吗?  详情 回复 发表于 2015-8-25 15:27
回复

使用道具 举报

10610#
 楼主| 发表于 2015-8-25 15:27:37 | 只看该作者
hhh333 发表于 2015-8-25 14:03
这是不理顺的:

这是运行理顺程序后的:

这样的问题:
1级内核:
NATIVE光盘M:
加载M:\NV03.WIM 到 {PATHX}

2级内核:
M:改为O:

这{PATHX} 还是正常的吗?

点评

我上面的图已经很清楚了的,先三级内核是从D盘加载的,理顺后变为F盘也正常。  详情 回复 发表于 2015-8-25 16:07
回复

使用道具 举报

10611#
 楼主| 发表于 2015-8-25 15:28:25 | 只看该作者
hhh333 发表于 2015-8-25 14:03
这是不理顺的:

这是运行理顺程序后的:

还有 imdisk盘符怎么排,

整个流程什么样的?

点评

确实有点复杂,基于以前的理顺盘符是基本没有问题的这个假设。这应该有个前提条件:挂载的、模拟的盘,如RAMDISK、IMDISK这些盘都不管,只管物理实际存在的盘:硬盘、光盘、USB盘(包括移动硬盘、U盘和卡) 也基本  详情 回复 发表于 2015-8-25 16:03
回复

使用道具 举报

10612#
发表于 2015-8-25 16:03:52 | 只看该作者
本帖最后由 hhh333 于 2015-8-25 16:06 编辑
mdyblog 发表于 2015-8-25 15:28
还有 imdisk盘符怎么排,

整个流程什么样的?


确实有点复杂,基于以前的理顺盘符是基本没有问题的这个假设。这应该有个前提条件:挂载的、模拟的盘,如RAMDISK、IMDISK这些盘都不管,只管物理实际存在的盘:硬盘、光盘、USB盘(包括移动硬盘、U盘和卡)
也基本按这个顺序来排盘符。说白了就几点:
第一、保持大顺序按硬盘、光盘、USB盘来排;
第二、同一个盘的各分区,只要分配了盘符,就应该按物理顺序排,并尽量保持连续,除非有不参与排序的盘占用了盘符。
第三、其他盘不管

点评

加了个选项 0x20或开关-cdrom: CDROM也排序。 顺序: 本地磁盘 本地CDRIM USBCDROM 固定USBDISK 移动USBDISK/卡  详情 回复 发表于 2015-8-25 18:25
回复

使用道具 举报

10613#
发表于 2015-8-25 16:07:44 | 只看该作者
本帖最后由 hhh333 于 2015-8-25 16:51 编辑
mdyblog 发表于 2015-8-25 15:27
这样的问题:
1级内核:
NATIVE光盘M:


我上面的图已经很清楚了的,先二级内核是从D盘加载的,理顺后变为F盘也正常。
回复

使用道具 举报

10614#
 楼主| 发表于 2015-8-25 18:25:52 | 只看该作者
本帖最后由 mdyblog 于 2015-8-25 18:28 编辑
hhh333 发表于 2015-8-25 16:03
确实有点复杂,基于以前的理顺盘符是基本没有问题的这个假设。这应该有个前提条件:挂载的、模拟的盘, ...


加了个选项 0x20或开关-cdrom: CDROM也排序。(若有什么后果,自负)

  1. DISK -check  ,,,1,?:,0x31
复制代码


顺序:
本地磁盘    本地CDROM      USBCDROM       固定USBDISK     移动USBDISK/卡

太复杂了, 更复杂的不干了。

点评

DISK ,,,1,?:,0x20 光盘盘符没整理 DISK ,,,1,?:,0x31 光盘整没了  详情 回复 发表于 2015-8-25 20:04
回复

使用道具 举报

10615#
发表于 2015-8-25 20:04:46 | 只看该作者
mdyblog 发表于 2015-8-25 18:25
加了个选项 0x20或开关-cdrom: CDROM也排序。(若有什么后果,自负)

DISK  ,,,1,?:,0x20    光盘盘符没整理
DISK  ,,,1,?:,0x31    光盘整没了

点评

奇怪, 我测试过正常啊。 如图: 整理前: [attachimg]223839[/attachimg] 整理: [attachimg]223841[/attachimg] 整理后: [attachimg]223840[/attachimg]  详情 回复 发表于 2015-8-25 22:11
回复

使用道具 举报

10616#
发表于 2015-8-25 20:42:19 | 只看该作者
本帖最后由 hhh333 于 2015-8-25 20:46 编辑

LZ可能没有完全理解这种需求的意思,导致问题复杂化。请参考victor的理顺盘符批处理:

::Created by victor888, QQ:2511755859
::Special thanks to CLONECD
::Ordering and showing drive letters by drive type
@echo off
SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION

set ver=2013-06-23

::If "AUTO" was set to "y", all messed drive letters will be re-ordered automaticly without nitification.
::If "AUTO" was set to "n", a notification will come out to ask for confirmation wether to re-order messed driver letters.

set AUTO=y

:: 1. "U" is the FIRST Removable USB Disk drive letter to be fixed just change it as you like.
:: 2. "T" is the FIRST USB CDROM drive letter to be fixed just change it as you like.
:: 3. Above drive letters must not be conflict with any other existing drive letters, otherwise error will happen.
:: 4. You may disable the function of fixing above drive letters simply by deleting them.

set USBCDROM=
set USBDRV=


pushd %~dp0
if %~d0 neq %systemdrive% (
  if not exist %temp%\%~nx0 (
    copy %0 %temp%\ /y >nul
    copy drvtype.exe %temp%\ /y >nul 2>&1
    copy pecmd.exe %temp%\ /y >nul 2>&1
    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
  )
)


echo              Batch file for ordering messed drive letters
echo        V.!ver!, By Victor888 from HTTP://BBS.WUYOU.COM
echo       ----------------------------------------------------------------------
echo.
echo Here is detailed information:
echo.


::get all drive letters by fsutil.exe
call :fsutil
if defined ALLDRV (
  set ALLDRV=!ALLDRV:\=!
  set ALLDRV=!ALLDRV: =!
  set ALLDRV=!ALLDRV::=: !
)

echo All drive letters: %ALLDRV%

::get all volume mount points and their full paths and merge them
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::=: !
  echo Mounted drive letters: !mtdrv!
)

::get virtual drive letters which has no mount point
set virdrv=%ALLDRV%
for %%a in (%mtdrv%) do (
  set virdrv=!virdrv:%%a=!
)

set virdrv=!virdrv: =!
if defined virdrv (
  set virdrv=!virdrv::=: !
  echo Virtual drive letters: !virdrv!
  for /f "tokens=3 delims=         " %%a in ('reg query HKLM\System\CurrentControlSet\Services\ISODrive\Parameters /s 2^>nul ^|find /i "drive"') do (
    if %errorlevel% equ 0 (
      set indvir=%%a
      if defined indvir (
        for %%b in (!virdrv!) do (
          if /i !indvir!: equ %%b (
            echo The ULTRAISO produced drive letter %%b
          )
        )
      )
    )
  )
)


::get hard disk drive letters, Datarm drive letters and fixed USB drive letters by clonecd's DRVTYPE.
for /f "tokens=1-5 delims=|" %%a in ('drvtype -a ^|find ":"') do (
  set diskorder=%%a
  set hdtype=%%b
  set gptmbr=%%c
  set isssd=%%d
  set strdrv=%%e
  set hddrv=

  for %%f in (!strdrv!) do (
    set eachdrv=%%f
    set eachdrv=!eachdrv:~1,2!
    set hddrv=!hddrv! !eachdrv!
    set order=!order! !diskorder!:%%f
  )
  set hdtype=!hdtype:Vmware=!
  if !hdtype! neq %%b (
    set /a ii+=1
    echo Vmware Internel !gptmbr! hard disk !ii! mount path: !hddrv!
    set thddrv=!thddrv! !hddrv!
  ) else (
    set hdtype=!hdtype:diskvirtual=!
    if !hdtype! neq %%b (
      set /a rr+=1
      echo Virtual PC Internel !gptmbr! hard disk !rr! mount path: !hddrv!
      set thddrv=!thddrv! !hddrv!
    ) else (
      set "hdtype=!hdtype:Virtual=!"
      if !hdtype! neq %%b (
        set /a jj+=1
        echo Virtual !gptmbr! hard disk !jj! mount path: !hddrv!
        set virdrv=!virdrv! !hddrv!
      ) else (
        set hdtype=!hdtype:RAMDISK=!
        if !hdtype! neq %%b (
          set /a oo+=1
          echo RAMDISK !gptmbr! hard disk !oo! mount path: !hddrv!
          set virdrv=!virdrv! !hddrv!
        ) else (
          set hdtype=!hdtype:FIRADISK=!
          if !hdtype! neq %%b (
            set /a pp+=1
            echo FIRADISK !gptmbr! hard disk !pp! mount path: !hddrv!
            set firadrv=!firadrv! !hddrv!
          ) else (
            set hdtype=!hdtype:winvblock=!
            if /i !hdtype! neq %%b (
              set /a bb+=1
              echo WINVBLOCK !gptmbr! hard disk !bb! mount path: !hddrv!
              set winvdrv=!winvdrv! !hddrv!
            ) else (
              set hdtype=!hdtype:USB=!
              if /i !hdtype! neq %%b (
                set /a nn+=1
                set tmpsysdrv=!hddrv:%systemdrive%=!
                if /i !hddrv! neq !tmpsysdrv! (
                  set usbsys=!hddrv!
                ) else (
                  set uhddrv=!uhddrv! !hddrv!
                )
                echo Fixed USB !gptmbr! disk !nn! mount path: !hddrv!
              ) else (
                set isssd=!isssd:SSD=!
                if !isssd! neq %%d (
                  set /a qq+=1
                  echo Solid State !gptmbr! Hard disk !qq! mount path: !hddrv!
                  if !qq!==1 (
                    for %%f in (!strdrv!) do (
                      set "eachdrv=%%f"
                      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 %%f in (!strdrv!) do (
                        set "eachdrv=%%f"
                        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! !winvdrv!
set allhddrv=!newhddrv! !uhddrv!

if defined virdrv (
  if defined allhddrv (
    for %%a in (!virdrv!) do (
      for %%b in (!allhddrv!) do (
        if %%a equ %%b (
          set hdvir=!hdvir! %%a
          set virdrv=!virdrv:%%a=!
        )
      )
    )
  )
)

if defined hdvir echo No mount point hard disk drive letters: !hdvir!

if defined actdrv set newhddrv=!actdrv! !newhddrv:%actdrv%=!

if defined allhddrv (
  set mthddrv=!allhddrv!
  if defined mtdrv (
    set otherdrv=!mtdrv!
    for %%a in (!mthddrv! !virdrv!) do set otherdrv=!otherdrv:%%a=!
    set otherdrv=!otherdrv: =!
    set otherdrv=!otherdrv:%systemdrive%=!
    if defined otherdrv (
      set otherdrv=!otherdrv::=: !
      echo Other mounted drive letters: !otherdrv!
    )
  )
)

if defined otherdrv (
  for %%a in (%otherdrv%) do (
    set docheck=
    set mnreg=
    for /f "skip=2 tokens=3 delims=         " %%b in ('reg query HKLM\SYSTEM\MountedDevices /v \DosDevices\%%a') do (
      set "mnreg=%%b"
      if defined mnreg (
        set first8=!mnreg:~0,8!
        if !first8! equ 5F003F00 set docheck=ok
        if !first8! equ 5C003F00 set docheck=ok
        if /i !docheck! equ ok (
          set mnreg=!mnreg:5C=#!
          set mnreg=!mnreg:5f=#!
          set mnreg=!mnreg:23=#!
          set mnreg=!mnreg:26=#!
          set mnreg=!mnreg:00=!
          for /f "tokens=2,3,7 delims=#" %%c in ("!mnreg!") do (
            set tpcode=%%c
            set drvcode=%%d
            set prodcode=%%e

            rem FDC
            if /i !tpcode! equ 464443 (
              set /a fd+=1
              set intflp=!intflp! %%a
              echo Internal Floppy Drive Letter: %%a
            )

            rem DAEMON TOOLS
            if /i !tpcode! equ 4454534F4654425553 (
              set dtdvd=!dtdvd! %%a
              echo Daemon Tools CD/DVD Drive Letter: %%a
            )

            rem IDE
            if /i !tpcode! equ 494445 (
              if /i !tpcode! neq !tpcode:4364526F6D=! (
                set /a id+=1
                set idedvd=!idedvd! %%a
                echo IDE CD/DVD ROM: %%a
              )
            )

            rem SCSI
            if /i !tpcode! equ 53435349 (
              if /i !drvcode! neq !drvcode:4364526F6D=! (
                if /i !prodcode! equ 5669727475616C (
                  echo SCSI Virtual DVD ROM: %%a
                  set msvirdvd = !msvirdvd! %%a
                ) else (
                  echo SCSI CD/DVD ROM: %%a
                  set /a id+=1
                  set scsidvd=!scsidvd! %%a
                )
              )
            )

            rem USBSTOR        
            if /i !tpcode! equ 55534253544F52 (
              if /i !drvcode! equ 4364526F6D (
                set /a id+=1
                set /a ud+=1
                set usbdvd=!usbdvd! %%a
                echo USB CD/DVD ROM: %%a
              )
              if /i !drvcode! equ 4469736B (
                set /a ur+=1
                set usbrem=!usbrem! %%a
                echo Removable USB "Disk" Drive letter: %%a
              )
            )

            rem STORAGE, also removable USB
            if /i !tpcode! equ 53544F52414745 (
              if /i !drvcode! equ 52656D6F7661626C654D65646961 (
                set /a ur+=1
                set usbrem=!usbrem! %%a
                echo Removable USB "Storage" Drive letter: %%a
              )
            )  
   
            rem FIRA_DISK  
            if /i !tpcode! equ 464952414449534B (
              if /i !drvcode! equ 53466C6F707079 (
                set /a fd+=1
                set firaflp=!firaflp! %%a
                echo FIRA Floppy Disk Drive letter: %%a
              )
              if /i !drvcode! equ 4344524F4D (
                set /a frd+=1
                set firadvd=!firadvd! %%a
                echo FIRA CD/DVD ROM: %%a
              )
            )

            rem WINV_BLOCK
            if /i !tpcode! equ 57696E56426C6F636B (
              if /i !drvcode! equ 52414D466C6F7070794469736B (
                set /a fd+=1
                set winvflp=!winvflp! %%a
                echo Winv Block Ram Floppy Disk Drive letter: %%a
              )
              if /i !drvcode! equ 52414D4F70746963616C44697363 (
                set /a wvd+=1
                set wvbkdvd=!wvbkdvd! %%a
                echo Winv Block Ram CD/DVD ROM: %%a
              )
              if /i !drvcode! equ 46696C654F70746963616C44697363 (
                set /a wvd+=1
                set wvbkdvd=!wvbkdvd! %%a
                echo Winv Block File CD/DVD ROM: %%a

              )
            )
          )  
        )
      )
    )
  )
)

set flpdrv=!intflp!!firaflp!!winvflp!


if defined usbdvd (
  set usbdvd=!usbdvd: =!
  set usbdvd=!usbdvd::=: !
  if !ud! geq 1 (
    if defined USBCDROM (
      set tmpud=!usbdvd:%systemdrive%=!
      if defined tmpud (
        set FirstUD=!usbdvd:~0,1!
        if /i !USBCDROM! neq !FirstUD! (
          for /f %%a in ('mountvol !FirstUD!: /l') do (
            mountvol !FirstUD!: /d
            mountvol !USBCDROM!: %%a
            echo First USBCD ROM drive letter was set to: !USBCDROM!:
          )
        )
        set usbdvd=!usbdvd:~2!
      )  
    )
  )
)

set dvddrv=!scsidvd!!idedvd!!msvirdvd!!dtdvd!!usbdvd!

if defined flpdrv (
  set flpdrv=!flpdrv: =!
  set flpdrv=!flpdrv::=: !
  if !fd! gtr 1 (
    echo ALL Floppy drive letters: %flpdrv%
  )
)

set virdrv=!virdrv! !flpdrv!

if defined dvddrv (
  set dvddrv=!dvddrv: =!
  set dvddrv=!dvddrv::=: !
  if !id! gtr 1 (
    echo ALL DVD/CD drive letters: %dvddrv%
  )
)

if defined firadvd (
  set firadrv=!firadvd: =!
  set firadvd=!firadvd::=: !
  if !frd! gtr 1 (
    echo ALL Virtual Firadisk Optical drive letters: %firadvd%
  )
)

if defined wvbkdvd (
  set wvbkdvd=!wvbkdvd: =!
  set wvbkdvd=!wvbkdvd::=: !
  if !wvd! gtr 1 (
    echo ALL Virtual Winvblock Optical drive letters: %wvbkdvd%
  )
)

if defined usbrem (
  set usbrem=!usbrem: =!
  set usbrem=!usbrem::=: !
  if !ur! gtr 1 (
    echo ALL Removable USB drive letters: %usbrem%
  )
  if !ur! geq 1 (
    if defined USBDRV (
      set tmprem=!usbrem:%systemdrive%=!
      if defined tmprem (
        set FirstU=!usbrem:~0,1!
        if /i !USBDRV! neq !FirstU! (
          for /f %%a in ('mountvol !FirstU!: /l') do (
            mountvol !FirstU!: /d
            mountvol !USBDRV!: %%a
            echo First removable USB disk drive letter was set to: !USBDRV!:
          )
        )
        set usbrem=!usbrem:~2!
      )  
    )
  )
)

echo SYSTEM DRIVE LETTER: %systemdrive%

if defined newhddrv (
  set totaldrv=%usbsys% %newhddrv% %dvddrv% %uhddrv% %usbrem% %wvbkdvd% %firadvd%
) else (
  set totaldrv=%usbsys% %uhddrv% %usbrem% %dvddrv% %wvbkdvd% %firadvd%
)

set totaldrv=!totaldrv:%systemdrive%=!

if defined virdrv (
  for %%a in (!virdrv!) do set totaldrv=!totaldrv:%%a=!
  set virdrv=!virdrv::=!
)

set totaldrv=!totaldrv: =!
set totaldrv=!totaldrv::=: !

if defined totaldrv set totaldrv=!totaldrv::=!

set fulldrv=CDEFGHIJKLMNOPQRSTUVWXYZ

for %%a in (%virdrv%) do set fulldrv=!fulldrv:%%a=!
set fulldrv=!fulldrv:%systemdrive:~0,1%=!

::ordering drive letters start
set /a kk=-1
for %%a in (%totaldrv%) do (
  set /a kk=kk+1
  call :olddrv %%a
)

if defined ordereddrv (
  if /i !AUTO! equ n (
    echo DRIVE LETTERS to be ordered: %ordereddrv:~0,-1%
    set /p doorder="Are you sure to make above drive letter changes (Y/N)"
    if /i !doorder! equ y (
      call :mountbegin
      if errorlevel 0 (
        echo "Drive letter changing succeeded!"
      ) else (
        echo "Error happened, please check no drive letter used when changing begin!"
      )
    ) else (
      echo Drive letter changing cancelled by user!
    )
  ) else (
    call :mountbegin
  )
) else (
  echo DRIVE LETTER ORDER IS CORRECT.
)

if %~d0 neq %systemdrive% (
  if exist %temp%\drvtype.exe del %temp%\drvtype.exe
  if exist %temp%\pecmd.exe del %temp%\pecmd.exe
  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
)

if !AUTO! equ n (
  pause
  goto :end
) else (
  goto :end
)
goto :end

:olddrv
set nk=!fulldrv:~%kk%,1!
if /i %1 neq !nk! (
  set ordereddrv=!ordereddrv! %1: to !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!\
  )
)

goto :eof

:dsptdrv
set dpd=
for %%a in (!order!) do (
  set eachdpd=%%a
  set tmpeachdpd=!eachdpd:%1=!
  if !eachdpd! neq !tmpeachdpd! (
    if !eachdpd:~-1! neq $ (
      set dpd=!eachdpd:~0,-2!
    ) else (
      set dpd=!eachdpd:~0,-3!
    )
  )
)
goto :eof

:vid_drv
set aa=%1
if defined hdvir (
  set tmphdvir=!hdvir:%1=!
  if !hdvir! neq !tmphdvir! (
    call :dsptdrv !aa!
    set newvid=!newvid! !dpd!%2
  ) else (
    for /f %%b in ('mountvol %1: /l') do (
      set tmp=%%b
      set tmp=!tmp:\\?\Volume=!
      set tmp=!tmp:\=!
      set newvid=!newvid! !tmp!%2
    )
  )
) else (
  for /f %%c in ('mountvol %1: /l') do (
    set tmp=%%c
    set tmp=!tmp:\\?\Volume=!
    set tmp=!tmp:\=!
    set newvid=!newvid! !tmp!%2
  )
)
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

其实际效果如下:
整理前:


整理后:


结果是令人满意的。XYZ这些盘没有变,而硬盘光盘按顺序排好了。即既使进入系统后再整理盘符,也不会出错。

回复

使用道具 举报

10617#
 楼主| 发表于 2015-8-25 22:11:57 | 只看该作者
hhh333 发表于 2015-8-25 20:04
DISK  ,,,1,?:,0x20    光盘盘符没整理
DISK  ,,,1,?:,0x31    光盘整没了

奇怪, 我测试过正常啊。
如图:
整理前:


整理:


整理后:

点评

不整理: [attachimg]223842[/attachimg] 整理后: [attachimg]223843[/attachimg] 两个问题:光盘被整没了、VHD整到前面去了,orderdrv没有这个问题  详情 回复 发表于 2015-8-25 22:29
回复

使用道具 举报

10618#
发表于 2015-8-25 22:29:24 | 只看该作者
mdyblog 发表于 2015-8-25 22:11
奇怪, 我测试过正常啊。
如图:
整理前:


不整理:

整理后:

两个问题:光盘被整没了、VHD整到前面去了,orderdrv没有这个问题

点评

1:量产了个 USBCDROM, 小修改了。 好了。 整理前: [attachimg]223845[/attachimg] 整理: DISK -check ,,,1,?:,0x31 整理后: [attachimg]223846[/attachimg] 正确. 2: VHD . 这个不算问题  详情 回复 发表于 2015-8-25 23:39
回复

使用道具 举报

10619#
 楼主| 发表于 2015-8-25 23:39:07 | 只看该作者
hhh333 发表于 2015-8-25 22:29
不整理:

整理后:


1:量产了个 USBCDROM, 小修改了。
好了。

整理前:


整理:
DISK -check  ,,,1,?:,0x31


整理后:

正确.


2: VHD . 这个不算问题吧。
VHD 是MS自家的。 MS把他弄成“真”的硬盘一样。 可以如普通磁盘一样分区。

这个在 “磁盘管理”中可看到他。 【分区管理】中也可以看到她。
这可不是Imdisk那种虚拟盘。

如这个也要区分的话,要区分的也太多了,而且新类型也在不断冒出来。

只要是\\.\PhysicalDriveN  这种接口,都当作(普通)磁盘的,都整理的,而且只分是否USB。不再细分了。


点评

这个区不区分无所谓了,这个命令有不有一个保留盘符的概念,也可以理解为只理顺某个范围内的盘符,譬如只对分配的C到W的盘符进行处理,这样就保留了A、B、X、Y、Z,即凡是分配到这些盘符的盘将保持不变。  详情 回复 发表于 2015-8-26 07:21
回复

使用道具 举报

10620#
发表于 2015-8-26 07:21:25 | 只看该作者
本帖最后由 hhh333 于 2015-8-26 07:23 编辑
mdyblog 发表于 2015-8-25 23:39
1:量产了个 USBCDROM, 小修改了。
好了。


这个区不区分无所谓了,这个命令有不有一个保留盘符的概念,也可以理解为只理顺某个范围内的盘符,譬如只对分配的C到W的盘符进行处理,这样就保留了A、B、X、Y、Z,即凡是分配到这些盘符的盘将保持不变。
也即来个盘符列表CDEFG、C-W形式的选项参数

点评

有 -from:CDEFGHIJKLMNOPQRSTUV 顺序可以任意指定,且按指定顺序分配。 单个盘符就是起始了。 -from:F 或 -from:F: 就是F-Z DISK -check -from:CDEFGHIJKLMNOPQRSTUV ,,,1,?:,0x31  详情 回复 发表于 2015-8-26 08:33
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-9-25 07:22

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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