无忧启动论坛

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

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

    [复制链接]
8791#
发表于 2014-12-29 10:59:12 | 只看该作者
本帖最后由 ling3882688 于 2014-12-29 12:02 编辑
mdyblog 发表于 2014-12-29 10:27
电脑中了。
33-36的源码被加密了,打不开。
只能用备份的32版。


奥,原来是这样。因为小内存测试时新版本无法正常加载的原因,目前还是用的88.01.00那个版本。

老版本暂时先这样用了
FORX !\TOOLS\Soft.wim,EXINI,1,MOUN %EXINI%,Y:\Soft\,1,%temp%

正序和逆序搜索的时候,可不可以优先搜索当前目录然后再正序或者逆序搜索?(不考虑使用%CurDrv%的前提下)
比如   C D E F G H ,配置文件位于E盘,Soft.wim只有E盘有的话,正序逆序没差别,如果E盘有 C H 盘也有一个Soft.wim,就不会优先加载当前目录下的了。

个人见解,可能有考虑不到的地方。

点评

FORX 加了个开关 *cur, 表示 当前盘符优先。 ENVI^ EnviMode=1 ENVI$ NL=0d 0a ENVI FS=[%CurDrv%] 普通正向 FORX \A.TXT,F,0,ENVI FS=%FS% %F% ENVI FS=%FS%%NL%[%CurDrv%] 普通反向 FORX !\A.TXT,F,  详情 回复 发表于 2014-12-29 17:50
回复

使用道具 举报

8792#
 楼主| 发表于 2014-12-29 17:50:39 | 只看该作者
ling3882688 发表于 2014-12-29 10:59
奥,原来是这样。因为小内存测试时新版本无法正常加载的原因,目前还是用的88.01.00那个版本。

老版 ...

FORX 加了个开关 *cur, 表示 当前盘符优先。
ENVI^  EnviMode=1
ENVI$ NL=0d 0a
ENVI FS=[%CurDrv%] 普通正向
FORX   \A.TXT,F,0,ENVI FS=%FS% %F%

ENVI FS=%FS%%NL%[%CurDrv%] 普通反向
FORX   !\A.TXT,F,0,ENVI FS=%FS% %F%

ENVI FS=%FS%%NL%[%CurDrv%]     正向
FORX  *cur  \A.TXT,F,0,ENVI FS=%FS% %F%

ENVI FS=%FS%%NL%[%CurDrv%]     反向
FORX  *cur  !\A.TXT,F,0,ENVI FS=%FS% %F%
MESS. %FS%

---------------------结果-------------
[D:] 普通正向 C:\A.TXT D:\a.txt E:\A.TXT
[D:] 普通反向 E:\A.TXT D:\a.txt C:\A.TXT
[D:]     正向 D:\a.txt C:\A.TXT E:\A.TXT
[D:]     反向 D:\a.txt E:\A.TXT C:\A.TXT

点评

感谢M大,有个错别字!应该是"当前"吧。 [attachimg]206121[/attachimg]  详情 回复 发表于 2014-12-29 22:45
回复

使用道具 举报

8793#
发表于 2014-12-29 22:45:12 | 只看该作者
mdyblog 发表于 2014-12-29 17:50
FORX 加了个开关 *cur, 表示 当前盘符优先。
ENVI^  EnviMode=1
ENVI$ NL=0d 0a

感谢M大,有个错别字!应该是"当前"吧。
回复

使用道具 举报

8794#
发表于 2014-12-30 16:58:45 | 只看该作者
本帖最后由 ling3882688 于 2014-12-30 17:03 编辑

call只支持同一个配置文件中的子过程,我有a.ini 和b.ini,a中定义了一个子过程,从a.ini中load 2.ini之后,如何能从2.ini访问a中的子过程?
//======a.ini开始=======
_SUB 1_SET
mess AAAAAA #ok
_END

load b.ini
//======a.ini结束=======


//======b.ini开始=======
call 1_SET
//======b.ini结束=======

点评

CALL 函数, 只能是 "当前" "内存文件", 不能跨越调用 PECMD2012有几种方法 方法1: LOAD 文件名*函数名 参数表 见附件 方法2: 内存函数 LOAD --mem 函数变量名 参数表 见附件 方法3: 变量  详情 回复 发表于 2014-12-31 12:27
回复

使用道具 举报

8795#
发表于 2014-12-31 10:07:21 | 只看该作者
12.30的版本文件是12.19的,这个怎么回事,12.27还新一点,前面12.25日的版本curdir有问题
回复

使用道具 举报

8796#
发表于 2014-12-31 10:08:50 | 只看该作者
hhh333 发表于 2014-12-31 10:07
12.30的版本文件是12.19的,这个怎么回事,12.27还新一点,前面12.25日的版本curdir有问题

老大的源代码文件丢了,现在用的是以前版本。
回复

使用道具 举报

8797#
发表于 2014-12-31 10:43:54 | 只看该作者
%curdir%有问题,不是ini文件的当前目录,记得以前出现过这个问题
回复

使用道具 举报

8798#
 楼主| 发表于 2014-12-31 10:59:30 | 只看该作者
hhh333 发表于 2014-12-31 10:07
12.30的版本文件是12.19的,这个怎么回事,12.27还新一点,前面12.25日的版本curdir有问题

1)计算机系统时间错了。
2)源代码回滚了到88.05.32. ——————损失不大,现在补救回来了,最新版88.05.37(龟速上传中)
回复

使用道具 举报

8799#
 楼主| 发表于 2014-12-31 12:27:40 | 只看该作者
本帖最后由 mdyblog 于 2014-12-31 13:43 编辑
ling3882688 发表于 2014-12-30 16:58
call只支持同一个配置文件中的子过程,我有a.ini 和b.ini,a中定义了一个子过程,从a.ini中load 2.ini之后 ...


CALL 函数, 只能是 "当前" "内存文件", 不能跨越调用

PECMD2012有几种方法
方法1: LOAD 文件名*函数名 参数表

见附件 法1-LOAD函数.zip (620 Bytes, 下载次数: 6)


方法2: 内存函数
LOAD --mem 函数变量名 参数表

见附件 法2-内存函数.zip (601.55 KB, 下载次数: 32)


方法3: 变量法
SET FUN1={语句1%NL%语句2%NL%...%NL%}

%&FUN1%

见附件 法3-内存变量法.zip (736 Bytes, 下载次数: 4)

方法4: import
import 子文件名

多个实体文件合并成一个 "内存文件",可以随意调用。
不过,只能86.xx及以前版或88.05.37可以。
88.XX早期版本由于复杂的加密算法,这个还没测试到,用不了,


见附件 法4-IMPORT.zip (601.41 KB, 下载次数: 9)

--------------
上面4个示例, 88.05.37包示例中有:示例\调用文件外的代码4法.zip

点评

谢谢M大。  详情 回复 发表于 2014-12-31 16:50
但多个参数的函数,还有调用方法,能不能给个例子?  详情 回复 发表于 2014-12-31 14:43
回复

使用道具 举报

8800#
 楼主| 发表于 2014-12-31 12:32:11 | 只看该作者
本帖最后由 mdyblog 于 2014-12-31 13:18 编辑
hhh333 发表于 2014-12-31 10:43
%curdir%有问题,不是ini文件的当前目录,记得以前出现过这个问题


36版是很奇怪。
下载最新的37 版试试(楼上“法2-内存函数.zip"中有37版)

VC编辑器,有时很奇怪,按个键(一般是Ctrl组合键),当i前行变成红红绿绿五颜六色的方块。可能代码已经破坏了。有好几次。

37 版 CurDrv CurFile正常
测试示例: 法2-内存函数.zip

回复

使用道具 举报

8801#
发表于 2014-12-31 14:43:40 | 只看该作者
mdyblog 发表于 2014-12-31 12:27
CALL 函数, 只能是 "当前" "内存文件", 不能跨越调用

PECMD2012有几种方法

但多个参数的函数,还有调用方法,能不能给个例子?

点评

上面就是示例。 处理变量法,其它3个都支持带多个参数, 和CALL 函数名后带你参数形式一致。 下面是上面的 ======================================================= 法2-内存函数.zip: a.ini:= b.i  详情 回复 发表于 2014-12-31 15:12
回复

使用道具 举报

8802#
 楼主| 发表于 2014-12-31 15:12:54 | 只看该作者
sp_star 发表于 2014-12-31 14:43
但多个参数的函数,还有调用方法,能不能给个例子?


上面就是示例。
处理变量法,其它3个都支持带多个参数, 和CALL 函数名后带你参数形式一致。
下面是上面的
=======================================================
法2-内存函数.zip:


a.ini:=
  1. MESS IN  CurFile=【%CurFile%】CurDir=【%CurDir%】CurDrv=【%CurDrv%】
  2. ENVI$ NL=0d 0d
  3. //内存函数1_SET, 使用: LOAD --mem 1_SET 。。。
  4. SET &1_SET=mess AAAAAA-1L [1_SET of a.ini] #ok%NL%mess AAAAAA-2L [1_SET of a.ini] #ok
  5. //_SUB 1_SET
  6. //mess AAAAAA [1_SET of a.ini] #ok
  7. //_END

  8. MESS LOAD  b.ini...
  9. LOAD b.ini
复制代码


b.ini:
  1. MESS IN 【%CurFile%】【%CurDrv%】
  2. LOAD --mem  &1_SET from %CurFile%
复制代码

这里 from %CurFile%
就是参数。


LOAD --mem  &1_SET 1111   22222   3333  4444[/code]
参数就是  1111   22222   3333  4444




=======================================================
法1-LOAD函数.zip:

a.ini:
  1. MESS IN a.ini
  2. _SUB 1_SET
  3. mess AAAAAA [1_SET of a.ini] #ok
  4. _END
  5. MESS LOAD  b.ini...
复制代码

LOAD b.ini
b.ini:
  1. MESS IN b.ini
  2. LOAD a.ini*1_SET  111 2222  3333  444
复制代码

参数就是 111 2222  3333  444



=======================================================
法4-IMPORT.zip

a.ini:
  1. MESS IN a.ini
  2. _SUB 1_SET
  3. mess AAAAAA 【1_SET of a.ini】 #ok
  4. _END

  5. MESS LOAD  b.ini...
  6. IMPORT b.ini
复制代码


  1. MESS "IN" b.ini
  2. call 1_SET  111 2222  3333  444
复制代码

参数就是 111 2222  3333  444



回复

使用道具 举报

8803#
发表于 2014-12-31 16:50:45 | 只看该作者
mdyblog 发表于 2014-12-31 12:27
CALL 函数, 只能是 "当前" "内存文件", 不能跨越调用

PECMD2012有几种方法

谢谢M大。
回复

使用道具 举报

8804#
 楼主| 发表于 2015-1-1 04:51:34 | 只看该作者
本帖最后由 mdyblog 于 2015-1-1 09:31 编辑

X64上支持超大FBWF的PECMD(X64).EXE
支持超大FBWFPECMD64.7z (590.11 KB, 下载次数: 2)

在8GRAM的电脑上测试
FBWF P60 L256 H5000

启动成功
结果应该是4.8G吧。



------------
实测,只能拷贝718M。不知还有哪儿限制,不知和WIM制作是否有关。
回复

使用道具 举报

8805#
发表于 2015-1-1 10:46:54 | 只看该作者
好像说从WIN8开始,FBWF的设定是无效的
回复

使用道具 举报

8806#
发表于 2015-1-1 18:44:32 | 只看该作者
FILE命令在使用通配符的时候,如何排除指定文件呢?
比如%WinDir%\SYSTEM32\下有PD111.EXE PD123.EXE PD456.EXE
FILE %WinDir%\SYSTEM32\PD*.EXE=>%WinDir%\SysWOW64\
如何排除PD111.EXE呢?

点评

FORX循环。 或 (可以多行,从而可实现更复杂的功能)  详情 回复 发表于 2015-1-1 22:34
回复

使用道具 举报

8807#
发表于 2015-1-1 20:14:43 | 只看该作者
前面的curdir异常是如何产生的?是原代码丢了吗?还会不会有已经更正过的异常再次出现异常?
回复

使用道具 举报

8808#
 楼主| 发表于 2015-1-1 22:30:03 | 只看该作者
本帖最后由 mdyblog 于 2015-1-1 22:36 编辑
hhh333 发表于 2015-1-1 20:14
前面的curdir异常是如何产生的?是原代码丢了吗?还会不会有已经更正过的异常再次出现异常?


》》前面的curdir异常是如何产生的?是原代码丢了吗?还会不会有已经更正过的异常再次出现异常?
估计是编译、编辑问题。(源码丢了,也没法确认)
36版,几乎没改什么(忙着MBROSTool收尾)
//以后的版本号和33-37一样跑得快, 因为MBROSTool自动升级PECMD.EXE是根据版本号的。

但是奇怪的问题不少。

1)系统时钟错误。会影响VC的编译。
2)VC编辑是 出过花屏。会破坏源代码。


》》还会不会有已经更正过的异常再次出现异常?
一般不会。这段代买一般也不会动的。
这是C++编的。彼此独立性还是满强的。
即使出问题,重新拿出来编译就没问题了。
回复

使用道具 举报

8809#
 楼主| 发表于 2015-1-1 22:34:31 | 只看该作者
ling3882688 发表于 2015-1-1 18:44
FILE命令在使用通配符的时候,如何排除指定文件呢?
比如%WinDir%\SYSTEM32\下有PD111.EXE PD123.EXE PD45 ...

FORX循环。

  1. FORX %WinDir%\SYSTEM32\PD*.EXE,&&F,0,  FIND $%&F%<>%WinDir%\SYSTEM32\PD111.EXE, FILE %&F%=>%WinDir%\SysWOW64\
复制代码


或 (可以多行,从而可实现更复杂的功能)
  1. FORX %WinDir%\SYSTEM32\PD*.EXE,&&F,0,
  2. {
  3. FIND $%&F%<>%WinDir%\SYSTEM32\PD111.EXE, FILE %&F%=>%WinDir%\SysWOW64\
  4. }
复制代码

点评

谢谢M大! IFEX命令,我想判断多个条件,就是or或者and。 帮助里的这个有点搞不明白:IFEX 条件1,!! IFEX 条件2,! IFEX 条件3, 做某事1! 做某事2 比如:我想判断桌面3个文件夹分别名称为%desktop%\11 %deskto  详情 回复 发表于 2015-1-1 23:00
回复

使用道具 举报

8810#
发表于 2015-1-1 23:00:59 | 只看该作者
本帖最后由 ling3882688 于 2015-1-2 00:03 编辑


谢谢M大!{:soso_e183:} 代码这东西要是看不懂就晕了,看懂了真的是醉了!那句话怎么说的:令人愉悦的代码通常是及其简单粗暴的!
IFEX命令,我想判断多个条件,就是or或者and。
帮助里的这个有点搞不明白:IFEX 条件1,!! IFEX 条件2,! IFEX 条件3, 做某事1! 做某事2   
比如:我想判断3个文件夹分别名称为11 22 33
1、如果 11 22 33三个有一个存在则:MESS 存在
2、只有 11 22 33三个都存在才满足:MESS 存在

要是可以这样写就好了{:soso_e113:} :
IFEX 11 AND 22 AND 33,MESS 存在!MESS 不存在
IFEX 11 OR 22 OR 33,MESS 存在!MESS 不存在


还有个问题:没有盘符的分区如何在不分配盘符的情况下获取文件系统信息? 比如:0#2
也就是PART -GUI里第二项的文件系统。实际上导出的磁盘信息里并不包含这一项。

点评

>>还有个问题:没有盘符的分区如何在不分配盘符的情况下获取文件系统信息? 比如:0#2 也就是PART -GUI里第二项的文件系统。实际上导出的磁盘信息里并不包含这一项。 --------------------------------- 临时分配  详情 回复 发表于 2015-1-2 02:54
>>IFEX命令,我想判断多个条件 IFEX/FIND/LOOP 支持条件组合。(80版以上,具体看看帮助) IFEX $[ 条件1 & 条件2 & 条件3 .。。 ], DO_A! DO_B & 是和 | 是与 可以用() 格式│IFEX{|}[^#~+-]{*ab  详情 回复 发表于 2015-1-2 02:46
回复

使用道具 举报

8811#
 楼主| 发表于 2015-1-2 02:46:50 | 只看该作者
本帖最后由 mdyblog 于 2015-1-2 09:13 编辑
ling3882688 发表于 2015-1-1 23:00
谢谢M大! 代码这东西要是看不懂就晕了,看懂了真的是醉了!那句话怎么说的:令人愉悦的 ...

>>IFEX命令,我想判断多个条件

IFEX/FIND/LOOP 支持条件组合。(80版以上,具体看看帮助)

IFEX $[ 条件1 & 条件2 & 条件3 .。。  ],   DO_A! DO_B

& 是和
| 是与
可以用()

格式│IFEX{|}[^#~+-]{*ab} {! }{$}[{! }<条件1> 关系运算 {! }<条件2> ..],{命令1}{! 命令2} //组合条件

IFEX [ $2 < 12 & C:\>10 & C:\ > 10 & ( C:\boot.ini ) & MEM > 100 ], MESS YES

IFEX $[ 11<>0 &  22 <>0 &  33<>0  ], MESS 存在! MESS 不存在
IFEX $[ 11<>0 |  22<>0 | 33<>0 ],MESS 存在! MESS 不存在
注意]前有个空格, 各条件间, &和| 前后有空格, 多些空格有好处。
IFEX $[]内部可直接用字符串比较,字符串都单引号括起来。
IFEX $[ ‘%ABC%’='123'  | 11<>0 |  22<>0 | 33<>0 ],MESS 存在! MESS 不存在

点评

IFEX $[ 110 & 22 0 & 330 ], MESS 存在!MESS 不存在 IFEX $[ 110 | 220 | 330 ],MESS 存在!MESS 不存在 我测试了是这样的: [attachimg]206311[/attachimg]  详情 回复 发表于 2015-1-2 08:41
回复

使用道具 举报

8812#
 楼主| 发表于 2015-1-2 02:54:02 | 只看该作者
本帖最后由 mdyblog 于 2015-1-2 02:57 编辑
ling3882688 发表于 2015-1-1 23:00
谢谢M大! 代码这东西要是看不懂就晕了,看懂了真的是醉了!那句话怎么说的:令人愉悦的 ...


>>还有个问题:没有盘符的分区如何在不分配盘符的情况下获取文件系统信息? 比如:0#2
也就是PART -GUI里第二项的文件系统。实际上导出的磁盘信息里并不包含这一项。
---------------------------------
临时分配一个盘符,用完删掉
下面写好的函数
_SUB GetVol
    TEAM SET &v=| SET &b=0| SET &VL=%~3| SET &dsk=%~4| SET &pt=%~5| SET &r1=| SET &r2=
    FIND $%&VL%=,!  FDRV *vol &r1,&r2=%&VL%
    FIND $%&VL%=,
    { LOCK #pecmd_disk
        ENVI &b=1
        FDRV *idle *rsort &&VL=*:
        LSTR &VL=2,%&VL%
        SHOW & %&dsk%#%&pt%,%&VL%
        FDRV *vol &r1,&r2=%&VL%
        SHOW & ,%&VL%
    }
    ENVI-ret %1=%&r1%
    ENVI-ret %2=%&r2%
_END

GetVol  &&VOL  &&FS ""  0 2
MESS.   【%&VOL%】   【%FS%】
//【win7x86】   【NTFS】

点评

谢谢M大。  详情 回复 发表于 2015-1-2 08:28
回复

使用道具 举报

8813#
发表于 2015-1-2 08:28:39 | 只看该作者
mdyblog 发表于 2015-1-2 02:54
>>还有个问题:没有盘符的分区如何在不分配盘符的情况下获取文件系统信息? 比如:0#2
也就是PART -GU ...

谢谢M大。{:soso_e179:}
回复

使用道具 举报

8814#
发表于 2015-1-2 08:41:18 | 只看该作者
mdyblog 发表于 2015-1-2 02:46
>>IFEX命令,我想判断多个条件

IFEX/FIND/LOOP 支持条件组合。(80版以上,具体看看帮助)

IFEX $[ 11<>0 &  22 <>0 &  33<>0  ], MESS 存在!MESS 不存在
IFEX $[ 11<>0 |  22<>0 | 33<>0 ],MESS 存在!MESS 不存在

我测试了是这样的:

点评

IFEX $[ 110 & 22 0 & 330 ], MESS 存在! MESS 不存在 !是半角的, 不会死全角的  详情 回复 发表于 2015-1-2 09:10
回复

使用道具 举报

8815#
 楼主| 发表于 2015-1-2 09:10:14 | 只看该作者
本帖最后由 mdyblog 于 2015-1-2 09:11 编辑
ling3882688 发表于 2015-1-2 08:41
IFEX $[ 110 &  22 0 &  330  ], MESS 存在!MESS 不存在
IFEX $[ 110 |  220 | 330 ],MESS 存在!MESS  ...


IFEX $[ 110 &  22 0 &  330  ], MESS 存在! MESS 不存在

!是半角的, 不是全角的

--------结果:
存在

点评

[attachimg]206314[/attachimg]  详情 回复 发表于 2015-1-2 10:13
平时也就逗号啥的注意过全角半角,! 这个还真没注意过。  详情 回复 发表于 2015-1-2 09:47
回复

使用道具 举报

8816#
发表于 2015-1-2 09:47:47 | 只看该作者
mdyblog 发表于 2015-1-2 09:10
IFEX $[ 110 &  22 0 &  330  ], MESS 存在! MESS 不存在

!是半角的, 不是全角的

{:soso_e113:}平时也就逗号啥的注意过全角半角,! 这个还真没注意过。
回复

使用道具 举报

8817#
发表于 2015-1-2 10:13:13 | 只看该作者
本帖最后由 ling3882688 于 2015-1-2 10:14 编辑
mdyblog 发表于 2015-1-2 09:10
IFEX $[ 110 &  22 0 &  330  ], MESS 存在! MESS 不存在

!是半角的, 不是全角的

咋还是不行呢?

点评

文间判断不要和 算比较混了。 还是好好看看帮助吧。 [attachimg]206316[/attachimg] 效果: [attachimg]206315[/attachimg]  详情 回复 发表于 2015-1-2 10:28
回复

使用道具 举报

8818#
 楼主| 发表于 2015-1-2 10:28:50 | 只看该作者
本帖最后由 mdyblog 于 2015-1-2 10:30 编辑


文间判断不要和  算比较混了。
还是好好看看帮助吧。

检测文件或目录: 文件路径
不需要其它符号
检测目录(非文件): 目录路径\
不需要其它符号

效果:

点评

好的,我再仔细看下。  详情 回复 发表于 2015-1-2 10:39
回复

使用道具 举报

8819#
发表于 2015-1-2 10:39:18 | 只看该作者
本帖最后由 ling3882688 于 2015-1-2 11:19 编辑
mdyblog 发表于 2015-1-2 10:28
文间判断不要和  算比较混了。
还是好好看看帮助吧。


好的.
回复

使用道具 举报

8820#
发表于 2015-1-3 17:50:03 | 只看该作者
curdir有问题,还是没解决,还是上个图吧,是由G:\H3PE\winpe.ini中调用Z:\DR8\REGDOC.INI,用的是PECMD2012.1.88.05.38.精简兼容版.sfx
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-9-27 15:30

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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