找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: mdyblog

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

   火... [复制链接]
 楼主| 发表于 2015-5-1 22:56:49 | 显示全部楼层
本帖最后由 mdyblog 于 2015-5-2 15:13 编辑

PECMD2012.1.88.05.60-130810中英.多窗口线程稳定版_win32_64新设计.sfx.7z

把MBROSTool的一个功能移植到PECMD中了。大家有福了。(MBROStool早就有了,就是有点大,哈)
PART -fs参数, 新建分区, 不弹出 “未格式化”。
(没有格式化,还是另外需要format.com )
注意
1)没有格式化,还是另外需要format.com
2) 如果只是恢复分区,不要用-fs,否则“后果很严重”:分区破坏了。
3)好像可以单独用,不需要分区(号),直接提前在指定位置和大小处理。以后不带-fs在改位置建分区,也不会弹出 “未格式化”。
017.png

点评

太棒了,既然都到这里了,能否再进一步啊?给个格式化参数。比如可以直接操作硬盘分区格式化为什么格式。 DFMT需要指定盘符,能否不分配盘符的情况下直接对采用分区编号0#2执行格式化?  详情 回复 发表于 2015-5-2 15:01
回复

使用道具 举报

 楼主| 发表于 2015-5-1 23:04:16 | 显示全部楼层
chiannet 发表于 2015-5-1 18:25
请问M大,如何先在容量不定的U盘或移动硬盘(2GB--1TB等等)高端(全部存贮空间的末尾)创建一个指定容量( ...

PART LIST DISK  1,&&V
MSTR &&dsksz=<2>%&V%
CALC #&&off=%dsksz% / 1M * 1M   -  1G

//尾部1G
IFEX  $%&off%>=1M,   PART -super  -force -mbr  -up -hup  -fs 1#2 -a 0x0E %&off% 1G

//前面的分区
CALC #&&sz1=%&off% - 1M

IFEX  $%&sz1%>=1M,  PART -super  -force -mbr  -up -hup  -fs 1#1 -a 0x0E   1M   %&SZ%

点评

part swap的疑惑。 当只有一个U盘时,“pecmd.EXE PART -up -super -swap:1 1#4”,能按照预期将hd1的1号分区与4号分区交换。 若接两个USB设备,想把hd2的1号分区与4号分区交换。运行“pecmd.EXE PART -up  详情 回复 发表于 2015-5-2 16:07
回复

使用道具 举报

 楼主| 发表于 2015-5-2 10:47:25 | 显示全部楼层
527104427 发表于 2015-5-2 04:43
请教下面的含义:

moun  [-mh: ]

-mh: <efi|auto|1-4>
对应FBT的EFI.IMG(可以是其它文件,-udimg:指定) 分区表映射。就是形成一个分区表项,对应于EFI.IMG。
1-4则制定映射到那个分区表项。
auto这是自动找
efi这是按照最有利EFI的方式。
回复

使用道具 举报

 楼主| 发表于 2015-5-2 11:11:12 | 显示全部楼层
527104427 发表于 2015-5-2 04:43
请教下面的含义:

moun  [-mh: ]

1:
没有 ENVI^ EnviMode=1
就是兼容方式,是懒人的方式:模模糊糊,“我的意思你懂,总之你给我搞定”。
这是一种贪婪解释,猜测尝试各种可能的解释,并反复解释。
%%&Num%%=1 变量
尝试 %&Num% , 没有就继续其它尝试,里发现这有,就解释了%&Num%
比如a

这样就是 %a%=1, 接着解释 %a%。


这种方式问题(1)效率低 (2)逻辑不稳定,和数据是耦合的,不适合编程。


------------------
2:
ENVI^ EnviMode=1这是标准模式。
总是按照确 的规则来解释,和数据无关。而且只解释一次,因而效率高。
%%&Num%%=1
前面%%解释为%
后面%%解释为%
结果为
%&Num%=1
就解释结束了。

要解释2此需要指明,此时巧好2次,不会是1次。
ENVI~ &NumK=C%&Num%.check
首先默认的解释
ENVI~ &NumK=Ca.check
ENVI~ 会再强制解释一次:
ENVI  &NumK=%Ca.check%



ENVI^ EnviMode=1
ENVI C1.check=1
FORX * 1 2 3 4 8 c d f h k l n ,&Num,TEAM ENVI~ &&NumK=C%&Num%.check| IFEX $%&NumK%=1,TEAM MESS OK|| EXIT FORX! MESS ERROR



------------------
3:
还可以 用命令来自动多解释一次:
命令首词中有%,会自动先解释一次。
常用如:%&cmd%
ENVI^ EnviMode=1
ENVI C1.check=1
FORX * 1 2 3 4 8 c d f h k l n ,&Num,
{
  TEAM ENVI &NumX=C%&Num%.check
  SET &cmd=IFEX $%%%&NumX%%%=1
  %&cmd%,TEAM MESS OK| EXIT FORX! MESS ERROR
}

说明:
SET &cmd=IFEX $%%%&NumX%%%=1
前面%%解释为%
后面%%解释为%
中间%&NumX%解释为Ca.check
结果&cmd内容为:
IFEX $%Ca.check%=1
下面那行就为:
IFEX $%Ca.check%=1,TEAM MESS OK| EXIT FORX! MESS ERROR


回复

使用道具 举报

 楼主| 发表于 2015-5-2 12:31:58 | 显示全部楼层
527104427 发表于 2015-5-2 12:26
晚上测试一下这种加载方式,之前试过,总有点奇怪,会把U盘后面未分区的给挂出来,EFI.img倒是映射出来了 ...


EFI.img倒是映射出来了,只是没有盘符。(FBT自带的映射从来没成功过)
-------
1)这个主要设计目的是UEFI启动。不是挂载到盘符 。
     事实上一半是隐藏分区 。
2)这个知识分区。没有分配盘符。
    要盘符,另外用SHOW命令。



-uh  就是卸载
回复

使用道具 举报

发表于 2015-5-2 15:01:59 | 显示全部楼层
mdyblog 发表于 2015-5-1 22:56
PECMD2012.1.88.05.60-130810中英.多窗口线程稳定版_win32_64新设计.sfx.7z

PART -fs参数, 新建分区,  ...

太棒了,既然都到这里了,能否再进一步啊?给个格式化参数。比如可以直接操作硬盘分区格式化为什么格式。
DFMT需要指定盘符,能否不分配盘符的情况下直接对采用分区编号0#2执行格式化?

点评

能否不分配盘符的情况下直接对采用分区编号0#2执行格式化? ----- 1: FORMAT.COM 必须要个盘符参数,才能格式化。 如果找到其它第3方软件,另说。 2: SHOW 一下,很难吗? 好像不是什么问题,不值  详情 回复 发表于 2015-5-2 15:07
直接DFMT不久可以了吗? 反正是编程,又不是敲命令行。 多写一行无所谓。  详情 回复 发表于 2015-5-2 15:04
回复

使用道具 举报

 楼主| 发表于 2015-5-2 15:04:53 | 显示全部楼层
ling3882688 发表于 2015-5-2 15:01
太棒了,既然都到这里了,能否再进一步啊?给个格式化参数。比如可以直接操作硬盘分区格式化为什么格式。 ...

直接DFMT不久可以了吗?
反正是编程,又不是敲命令行。
多写一行无所谓。
回复

使用道具 举报

 楼主| 发表于 2015-5-2 15:07:36 | 显示全部楼层
ling3882688 发表于 2015-5-2 15:01
太棒了,既然都到这里了,能否再进一步啊?给个格式化参数。比如可以直接操作硬盘分区格式化为什么格式。 ...

能否不分配盘符的情况下直接对采用分区编号0#2执行格式化?
-----
1:
FORMAT.COM 必须要个盘符参数,才能格式化。
如果找到其它第3方软件,另说。

2:
SHOW  一下,很难吗?
好像不是什么问题,不值得 大费脑筋。

点评

嗯,M大说的在理。  详情 回复 发表于 2015-5-2 15:18
回复

使用道具 举报

发表于 2015-5-2 15:18:41 | 显示全部楼层
mdyblog 发表于 2015-5-2 15:07
能否不分配盘符的情况下直接对采用分区编号0#2执行格式化?
-----
1:

嗯,M大说的在理。
回复

使用道具 举报

发表于 2015-5-2 16:07:20 | 显示全部楼层
本帖最后由 chiannet 于 2015-5-2 18:03 编辑
mdyblog 发表于 2015-5-1 23:04
PART LIST DISK  1,&&V
MSTR &&dsksz=%&V%
CALC #&&off=%dsksz% / 1M * 1M   -  1G

PECMD的帮助中关于swap的用法举例是:  
PART  -up -super -swap:1 1#4  //1#4和1#1交换  

建议改成:
PART  -up -super -swap:1 2#4  //2#4和2#1交换  
不容易歧义。
















点评

呵呵。 好的  详情 回复 发表于 2015-5-2 18:50
回复

使用道具 举报

 楼主| 发表于 2015-5-2 18:50:03 | 显示全部楼层
chiannet 发表于 2015-5-2 16:07
PECMD的帮助中关于swap的用法举例是:  PART  -up -super -swap:1 1#4  //1#4和1#1交换  
建议改成:PAR ...

呵呵。 好的

点评

我想交换hd2上的1和4 套搬例子,写成 PART -up -super -swap:2 1#4 , 结果出了问题,弄了好久才查到应该写成: PART -up -super -swap:1 2#4  详情 回复 发表于 2015-5-2 21:40
回复

使用道具 举报

发表于 2015-5-2 21:40:04 | 显示全部楼层

我想交换hd2上的1和4

套搬例子,写成
PART  -up -super -swap:2 1#4 ,
结果出了问题,弄了好久才查到应该写成:
PART  -up -super -swap:1 2#4

点评

呵呵。 示例改了。  详情 回复 发表于 2015-5-2 22:48
回复

使用道具 举报

 楼主| 发表于 2015-5-2 22:48:30 | 显示全部楼层
chiannet 发表于 2015-5-2 21:40
我想交换hd2上的1和4

套搬例子,写成

呵呵。
示例改了。
回复

使用道具 举报

 楼主| 发表于 2015-5-3 11:42:55 | 显示全部楼层
527104427 发表于 2015-5-3 11:33
请教老大,不知道这样写问题出在哪里?好像不能跳出来

ENVI a=


ENVI a=
LOOP #1=1,
{
        SED &&b=?,Y:,,C: D: F: J: Y:
        IFEX $%&b%>0,
        { FIND $%a%=,TEAM MESS YES| EXIT LOOP
        }!
       { FIND $%a%<>,TEAM MESS NO| EXIT LOOP
       }
}
回复

使用道具 举报

发表于 2015-5-4 12:03:54 | 显示全部楼层
本帖最后由 ling3882688 于 2015-5-4 12:07 编辑

M大,TIPS命令老是控制不好显示时间,比如:
TEAM TIPS >请稍等!<,正在安装001!...,10000,4,Shell32.dll#238|WAIT 3000
EXEC =%CurDir%\001.EXE
TEAM TIPS >请稍等!<,正在安装002!...,10000,4,Shell32.dll#238|WAIT 3000
EXEC =%CurDir%\002.EXE
TEAM TIPS >提示信息!<,安装完成!...,10000,4,Shell32.dll#238|WAIT 3000

如何能让TIPS消息框一直显示直到EXE安装完?比如这个001.EXE安装时间可能需要50秒或者更长。

点评

试试:  详情 回复 发表于 2015-5-4 13:31
回复

使用道具 举报

 楼主| 发表于 2015-5-4 13:31:59 | 显示全部楼层
本帖最后由 mdyblog 于 2015-5-4 13:33 编辑

ling3882688 发表于 2015-5-4 12:03
M大,TIPS命令老是控制不好显示时间,比如:
TEAM TIPS >请稍等!请稍等!提示信息!


试试:
  1. TIPS >请稍等!<,正在安装001!...,100000,4,Shell32.dll#238
  2. EXEC =%CurDir%\001.EXE
  3. TIPS *
  4. TIPS >请稍等!<,正在安装002!...,100000,4,Shell32.dll#238
  5. EXEC =%CurDir%\002.EXE
  6. TIPS *
  7. TEAM TIPS >提示信息!<,安装完成!...,100000,4,Shell32.dll#238|WAIT 3000
  8. TIPS *
复制代码

点评

谢M大。  详情 回复 发表于 2015-5-4 14:57
回复

使用道具 举报

发表于 2015-5-4 14:57:23 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2015-5-4 21:03:46 | 显示全部楼层
本帖最后由 mdyblog 于 2015-5-4 21:56 编辑

PECMD需要内置 IMDISK吗?
没有安装IMDISK也能直接使用(已经安装了就用安装的版本)。
就是有些大。
回复

使用道具 举报

 楼主| 发表于 2015-5-5 14:16:11 | 显示全部楼层
527104427 发表于 2015-5-5 13:56
FILE F:\TEMP\TMP2\2557823063424205564\new.exe>>%CurDir%\_new.exe

这条命令失败,new.exe移动的地 ...

那个是重命名。
应该:
FILE F:\TEMP\TMP2\2557823063424205564\new.exe->%CurDir%\_new.exe
回复

使用道具 举报

 楼主| 发表于 2015-5-5 15:10:45 | 显示全部楼层
527104427 发表于 2015-5-5 14:54
多谢老大,原来是我搞晕了。

不知道导出内置的图标和版本信息能再处理一下吗?就剩这两项有问题了

用RESEDIT不行吗?
回复

使用道具 举报

发表于 2015-5-6 07:50:10 | 显示全部楼层
本帖最后由 小絔小小小 于 2015-5-6 09:26 编辑

请问一下 2012.1.88.05.60-130810这一版的 我用FILE命令复制和重命名出来的文件都成0字节了

刚刚又试了一下 原来是因为我是从cmd运行的参数导致的
回复

使用道具 举报

发表于 2015-5-6 11:45:32 | 显示全部楼层
  1. `UDM或UD隐藏区装载外置
  2. _SUB LOAD_UDMHIDE_OP
  3. PART LIST disk,&&disks
  4. FORX * %&disks%,&&hd,
  5. {
  6.         ENVI &OPD=B:\H3PE
  7.         MOUN -udm -mhide \\.\PhysicalDrive%&hd% B:
  8.         IFEX %&OPD%\WINPE.INI,EXIT FORX
  9.         ENVI OPD=Z:
  10.         MOUN  -udm -mhide -udfs -udm- \\.\PhysicalDrive%&hd% Z:
  11.         IFEX %&OPD%\WINPE.INI,EXIT FORX
  12. }
  13. IFEX %&OPD%\WINPE.INI,LOAD %&OPD%\WINPE.INI
  14. _END
复制代码


只要将其中的&OPD改为OPD就是正常的。用PE内部变量难道不行?
回复

使用道具 举报

 楼主| 发表于 2015-5-6 14:04:44 | 显示全部楼层
本帖最后由 mdyblog 于 2015-5-6 15:14 编辑
527104427 发表于 2015-5-6 12:15
这样就好:

`UDM或UD隐藏区装载外置


对。而且是否用PE变量前后要一致。

完整点还要初始化一下:
`UDM或UD隐藏区装载外置

  1. _SUB LOAD_UDMHIDE_OP
  2. ENVI  &&OPD=:::     //初始化
  3. PART LIST disk,&&disks
  4. FORX * %&disks%,&&hd,
  5. {*
  6.         ENVI &OPD=B:\H3PE
  7.         MOUN -udm -mhide \\.\PhysicalDrive%&hd% B:
  8.         IFEX %&OPD%\WINPE.INI,EXIT FORX
  9.         ENVI &OPD=Z:
  10.         MOUN  -udm -mhide -udfs -udm- \\.\PhysicalDrive%&hd% Z:
  11.         IFEX %&OPD%\WINPE.INI,EXIT FORX
  12. }
  13. IFEX %&OPD%\WINPE.INI,LOAD %&OPD%\WINPE.INI
  14. _END
复制代码



怎么没有卸载啊?  如果不是的话, 是不是要卸载啊?

点评

我前面提问时掉了一个&,实际上是一致的。但确实是不行的。 确实象LZ所说加上ENVI &&OPD= 进行初始化就可以了 说明前面的代码的问题主要是没有初始化。不知有什么说法。不初始化PE变量就不能用吗?如下将第一  详情 回复 发表于 2015-5-6 16:09
回复

使用道具 举报

发表于 2015-5-6 16:09:33 | 显示全部楼层
本帖最后由 hhh333 于 2015-5-6 16:11 编辑
mdyblog 发表于 2015-5-6 14:04
对。而且是否用PE变量前后要一致。

完整点还要初始化一下:


我前面提问时掉了一个&,实际上是一致的。但确实是不行的。
确实象LZ所说加上ENVI  &&OPD=
进行初始化就可以了

说明前面的代码的问题主要是没有初始化。如下将第2行挂起,挂载Z:是成功的,但不执行Z:\winpe.ini(这个文件明明是有的)

  1. _SUB LOAD_UDMHIDE_OP
  2. ·ENVI &&OPD=
  3. PART LIST disk,&&disks
  4. FORX * %&disks%,&&hd,
  5. {
  6.         ENVI &OPD=B:\H3PE
  7.         MOUN -udm -mhide \\.\PhysicalDrive%&hd% B:
  8.         IFEX %&OPD%\WINPE.INI,EXIT FORX
  9.         ENVI &OPD=Z:
  10.         MOUN  -udm -mhide -udfs -udm- \\.\PhysicalDrive%&hd% Z:
  11.         IFEX %&OPD%\WINPE.INI,EXIT FORX
  12. }
  13. IFEX %&OPD%\WINPE.INI,LOAD %&OPD%\WINPE.INI
  14. _END
复制代码


不知有什么说法。不初始化PE变量就不能用吗?
回复

使用道具 举报

 楼主| 发表于 2015-5-6 16:53:12 | 显示全部楼层
527104427 发表于 2015-5-6 16:45
请教老大,下面三行代码有何不同?

ENVI  &&OPD=:::     

1)
ENVI  &&OPD=:::     
就是初始化一个新变量,内容为【:::】.随便写的非法数据, 就是使得下面 【IFEX %&OPD%\WINPE.INI,LOAD %&OPD%\WINPE.INI】非法。

2)
ENVI  &&OPD=
就是初始化一个新变量,内容为空【】. 【IFEX %&OPD%\WINPE.INI,LOAD %&OPD%\WINPE.INI】有效的, 【IFEX  \WINPE.INI,LOAD \WINPE.INI】,这可能不是想要的。

3)
ENVI  &OPD=
------------
如果自己、或爸爸、或爷爷。。。,  有OPD这个PE变量, 内容设为空。
否则, 新建个PE变量:OPD, 内容设为空。
回复

使用道具 举报

发表于 2015-5-6 18:28:59 | 显示全部楼层
请教一下楼主
SCRIPTINIT中的100资源 可否清空?
是否会对在PE中的正常使用照成影响呢
还有SCRIPT的102资源中有一小段东西
我现在的做法是把SCRIPTINIT中的100资源清空了
SCRIPT的102资源清空后在里面写的配置
表面没看出什么问题
希望大大能解答一下我的疑惑 因为本人是新手
对照着说明看了很久也没明白100资源的含义

点评

1: SCRIPTINIT中的100 ---------- 里面是一些初始化。 PECMD.EXE启动的时候会执行的。 2:清空 ---- 没有太大的问题。 只是哪些 默认的操作没有执行而已。 如果不需要,就不理他。 如果需要,可以在  详情 回复 发表于 2015-5-7 08:34
回复

使用道具 举报

发表于 2015-5-7 08:33:33 | 显示全部楼层
PECMD需要内置 IMDISK吗?

关键他那个版本在不断变化,也不知道哪个版本稳定, 不压缩,要大一百几十K呢

通常的版本文件不全,

awealloc.sys
swapadd.exe
上面两个用于设置页面文件到内存盘
imdisk.cpl
imdisk.exe   命令行
imdisk.sys

图形界面不说了,
可以命令行:创建,扩容,设置页面文件
CPL可以精简下资源

回复

使用道具 举报

 楼主| 发表于 2015-5-7 08:34:24 | 显示全部楼层
小絔小小小 发表于 2015-5-6 18:28
请教一下楼主
SCRIPTINIT中的100资源 可否清空?
是否会对在PE中的正常使用照成影响呢

1:
SCRIPTINIT中的100
----------
里面是一些初始化。
PECMD.EXE启动的时候会执行的。


2:清空
----
没有太大的问题。
只是哪些 默认的操作没有执行而已。
如果不需要,就不理他。
如果需要,可以在自己的脚本中再执行,效果一样的。


3:还有SCRIPT的102资源中有一小段东西
-------
那个没有用。占个问题。方便测试: LOAD  #102
就能“看”到效果

4:
SCRIPT的102资源清空后在里面写的配置
------------
可以的。
只是不会自动被执行。
可以手动执行: PECMD   LOAD   #102
也可以在 SCRIPT\101 中调用它:   LOAD   #102
后面的编号都可以的 103 104 105 .。。。

点评

嗯 感谢回复! 我就是直接在注册表里写的pecmd mian #102  详情 回复 发表于 2015-5-7 17:52
回复

使用道具 举报

发表于 2015-5-7 10:48:59 | 显示全部楼层
本帖最后由 hhh333 于 2015-5-7 10:51 编辑
527104427 发表于 2015-5-6 16:43
{  后面有个符号 *

没有这个符号,{ }里面的PE变量会自动销毁,加了就是this调用,不销毁PE变量


经过测试:
1、如你所说:循环中加*号与循环前初始化效果一样是正常的。不过这种用法真是不好理解的,PECMD中*号已经泛滥到了很难理解的程度
2、总之加&号的变量的用法还是不好理解,我还是尽量用不加&号的变量算了

如定义时用 &&xxx,引用时究竟用&xxx,还是xxx,应该如何理解?

点评

1: 用PE变量是为了写大型程序(>1000行),或作为函数库。 支持同名变量。 ENVI &&V=123 不用考虑前面是否有人使用V这个变量名。 环境变量做不到。一不小心修改了上级的循环变量。 2:如定义时用 &&xxx,  详情 回复 发表于 2015-5-7 13:58
回复

使用道具 举报

 楼主| 发表于 2015-5-7 13:58:14 | 显示全部楼层
本帖最后由 mdyblog 于 2015-5-7 14:25 编辑
hhh333 发表于 2015-5-7 10:48
经过测试:
1、如你所说:循环中加*号与循环前初始化效果一样是正常的。不过这种用法真是不好理解的, ...


1: 用PE变量是为了写大型程序(>1000行),或作为函数库。
支持同名变量。
ENVI &&V=123
不用考虑前面是否有人使用V这个变量名。
环境变量做不到。一不小心修改了上级的循环变量。

环境变量 不能存储大型数据的变量,比如1M字节。 PE变量可以2G字节。


2:如定义时用 &&xxx,引用时究竟用&xxx,还是xxx,应该如何理解?
--------------
定义时用 &&xxx。
一般来说, 引用为&&xxx。

有时 引用为 &&xxx,那是为强调是本级的,而不能是爸爸、爷爷那继承的。

{
ENVI  &&V=123
{
MESS  1:[%&V%]  2:[%&&V%]
}
}
得到的 【1:[123]  2:[]】
因为&V在上级定义的,所以 %&&V%没有长这个变量,为空。

点评

我用下面的代码测试了一下: { ENVI &&V=123 { MESS 1、变量定义的下一级:V=%V% &V=%&V% &&V=%&&V% } MESS 2、变量定义的同一级:V=%V% &V=%&V% &&V=%&&V% } MESS 3、变量定义的上一级:  详情 回复 发表于 2015-5-7 17:30
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-13 00:41

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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