无忧启动论坛

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

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

    [复制链接]
4021#
 楼主| 发表于 2012-12-22 20:37:38 | 只看该作者
原帖由 yidawpf 于 2012-12-22 14:50 发表
再请教一个问题,如下情况如何实现:
读取注册表[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters]
如果不存在“DHCPDomain”项,就弹出一个提示。

什么提示啊?是不是其它的东西的提示?
我这正常啊!


C:\>reg query  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Paramters /v DHCPDomain
! REG.EXE VERSION 3.0
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters

错误: 系统找不到指定的注册表项或值
C:\>pecmd regi HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\DHCPDoman,V
C:\>
回复

使用道具 举报

4022#
发表于 2012-12-22 20:56:38 | 只看该作者
围观一下。学习学习。
回复

使用道具 举报

4023#
 楼主| 发表于 2012-12-22 21:04:42 | 只看该作者
原帖由 diannao338 于 2012-12-22 11:21 发表
CPU占用率=      1 -(CPU使用时间为空闲时间差/总时间差)

是不是用 0的进程id那一行来计算?也就是第一行
结果是 -0.x 到-1.x 看不出是CPU占用率啊

反而这样有点像
CPU占用剩余=[(CPU使用时间为空闲时 ...


1:
CPU占用率=      1 -(CPU使用时间为空闲时间差/CPU个数/总时间差)
//说明:空闲时间差对每个CPU都计算一次,故要“/CPU个数
2:
是的,用 0的进程id那一行来计算,也就是第一行。

3: FIND  --pid  &TMS,
//返回: 空闲时间 总时间 CPU个数 1秒的时钟数 一时钟的100ns数。

HELP  FIND

4:CPU.WCS
ENVI &CPUS=1  //CPU个数
FIND  --pid  &TMS,
MSTR  &I1=<1>%&TMS%
MSTR  &T1=<2>%&TMS%
MSTR  &CPUS=<3>%&TMS%  //CPU个数
WAIT 200
CALL WIN1
_SUB WIN1,W285H129,CPU,
    LABE ,L44T19W60H30,CPU,,
    LABE CPU,L133T20W60H30,--,,
    TIME Timer1,1000, CALL OnTimer1
    CALL OnTimer1
_END //

_SUB OnTimer1
    FIND  --pid  &TMS,
    MSTR  &I2=<1>%&TMS%
    MSTR  &T2=<2>%&TMS%
    CALC #&I21=%&I2% - %&I1%
    CALC #&T21=%&T2% - %&T1%
    CALC &P= 100 - 100 * %&I21% / %&T21% / %&CPUS% ##1
    ENVI @CPU=%&P%%
    ENVI &I1=%&I2%
    ENVI &T1=%&T2%
_END




[ 本帖最后由 2012abc19701 于 2012-12-24 16:35 编辑 ]

CPU_WCS.zip

440 Bytes, 下载次数: 5

回复

使用道具 举报

4024#
 楼主| 发表于 2012-12-22 21:10:53 | 只看该作者
原帖由 diannao338 于 2012-12-22 10:03 发表
谢了,我试试

顺便问下,那个16进制的0x31 0x32 0x33
能直接313233这样转换?
像这种http://www.autoitx.com/viewthread.php?tid=32146&;highlight=%BF%ED%B4%F8%C1%AC%BD%D3


可以的,脚本改改就可以。2个一组,前面在加【0x】前缀。
回复

使用道具 举报

4025#
发表于 2012-12-22 21:11:05 | 只看该作者

回复 #4270 2012abc19701 的帖子

我的意思是在pe下读取该值。如果该值存在内容,说明网卡安装好了,如果不存在说明网卡没有安装上。出现未安装网卡的提示。

出现提示我会写。
但是如何实现读取该值并判断。
回复

使用道具 举报

4026#
发表于 2012-12-22 21:35:34 | 只看该作者

回复 #4274 yidawpf 的帖子

DhcpNameServer类型为REG_SZ,我系统中无DHCPDomain,不知道是不是REG_SZ。不加前导符也可以。

REGI $HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\DhcpNameServer,&&regdata
FIND $%&regdata%=,mess 不存在!mess %&regdata%

[ 本帖最后由 info 于 2012-12-22 21:50 编辑 ]
回复

使用道具 举报

4027#
发表于 2012-12-23 15:11:32 | 只看该作者

回复 #4275 info 的帖子

碰到一个很奇怪的问题。请教一下:
这是加载网络命令的最后一段:
REGI $HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\DhcpNameServer,&&regdata
FIND $%&regdata%=,MESS ▉ 是否尝试用其他方式安装网卡驱动? @ 通知:无法读取网卡信息! #YN *0 $Y!EXEC %Windir%\PENetwork\PENetwork.exe
FIND $%YESNO%=YES,TEAM Call ZDY!EXIT 1
KILL EXPLORER.EXE
TIPS 网络初始化,完成!,5000,4,SHELL32.DLL#1

通过这个DhcpNameServer是否有值来判断网卡是否安装好。
但是不管网卡是否安装完毕,都提示的是无法读取网卡信息。而不是打开PENetwork.exe。

如果把“
REGI $HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\DhcpNameServer,&&regdata
FIND $%&regdata%=,MESS ▉ 是否尝试用其他方式安装网卡驱动? @ 通知:无法读取网卡信息! #YN *0 $Y!EXEC %Windir%\PENetwork\PENetwork.exe
FIND $%YESNO%=YES,TEAM Call ZDY!EXIT 1”

这些删除,保存为ini文件,安装网卡完毕后再运行,则会自动判断并打开PENetwork.exe。

这个问题真的是很奇怪,是我哪里出错了呢。
请指导!
回复

使用道具 举报

4028#
发表于 2012-12-23 16:44:11 | 只看该作者

回复 #4276 yidawpf 的帖子

CurrentControlSet改为ControlSet001试试。将前导符$去掉也试试。

是不是该服务还未安装呢,对网络不是很懂,等2012abc19701上来看看是否代码错误?
回复

使用道具 举报

4029#
发表于 2012-12-23 17:51:11 | 只看该作者

回复 #4277 info 的帖子

改过ControlSet001了。
服务应该是安装了。
这个命令如果和网络加载ini在一个文件内就不管网卡是否安装完毕,都提示的是无法读取网卡信息。
但如果是网络加载完后再单独加载这个命令就正常的。
回复

使用道具 举报

4030#
发表于 2012-12-23 19:12:13 | 只看该作者

回复 #4278 yidawpf 的帖子

用REG命令试试看。

EXEC* &regdata=!reg query HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters /v DhcpNameServer
FIND $%&regdata%=,MESS ▉ 是否尝试用其他方式安装网卡驱动? @ 通知:无法读取网卡信息! #YN *0 $Y!EXEC %Windir%\PENetwork\PENetwork.exe
回复

使用道具 举报

4031#
发表于 2012-12-23 20:16:03 | 只看该作者

回复 #4279 info 的帖子

还是一样的。
我觉得你的两个命令都没有错。
但就是出问题。我再找找原因吧。
回复

使用道具 举报

4032#
发表于 2012-12-23 20:28:12 | 只看该作者
如果把这个命令执行两次:

REGI $HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\DhcpNameServer,&&regdata
FIND $%&regdata%=,MESS ▉ 是否尝试用其他方式安装网卡驱动? @ 通知:无法读取网卡信息! #YN *0 $Y!EXEC %Windir%\PENetwork\PENetwork.exe
FIND $%YESNO%=YES,TEAM Call ZDY!EXIT 1”


第一次会弹出无法读取网卡信息的提示,选否以后执行第二次这个命令,弹出PENetwork.exe。
另外如果把这个命令删除,加载完网络以后再执行这个命令,会判断后执行命令。
所以这个命令是没有问题的。但不懂的是为什么必须在加载完网络后再执行才行。如果在加载网络的最后一步执行也不行。
回复

使用道具 举报

4033#
发表于 2012-12-23 20:35:21 | 只看该作者
我在这里:
REGI $HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\DhcpNameServer,&&regdata
FIND $%&regdata%=,MESS ▉ 是否尝试用其他方式安装网卡驱动? @ 通知:无法读取网卡信息! #YN *0 $Y!EXEC %Windir%\PENetwork\PENetwork.exe
FIND $%YESNO%=YES,TEAM Call ZDY!EXIT 1
KILL EXPLORER.EXE
TIPS 网络初始化,完成!,5000,4,SHELL32.DLL#1

最后一步把前面的命令全部删掉,加一句:wait 100000
然后执行,加载完网络命令在等待的过程中手动执行你的命令,也是有效的。
真搞不懂了。
回复

使用道具 举报

4034#
发表于 2012-12-23 20:39:56 | 只看该作者
加入一句wait 10000
就好了。

估计是加载网络过程中注册表没有及时更新。
回复

使用道具 举报

4035#
 楼主| 发表于 2012-12-24 10:06:25 | 只看该作者
原帖由 yidawpf 于 2012-12-23 20:39 发表
加入一句wait 10000
就好了。

估计是加载网络过程中注册表没有及时更新。




【DhcpNameServer】DHCP 获得地址需要时间,所以等10秒。建议用其它键值

1:
_SUB WAIT_NET
    ENVI &&TM=10000 //10秒
    ENVI &&FND=0
    LOOP #0=%&FND%,
    {
        CALC &TM=%&TM% -  100
        IFEX $%&TM% < 1, ENVI &FND=-1
        REGI $HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\DhcpNameServer,&&regdata
        FIND $X=X%&regdata%,WAIT 100! ENVI &FND=1
    }
    FIND $1=%&FND%,EXEC %Windir%\PENetwork\PENetwork.exe ! MESS ▉ 是否尝试用其他方式安装网卡驱动? @ 通知:无法读取网卡信息! #YN *0 $Y
    //其它...
_END
// THREAD* CALL WAIT_NET //多线程异步方式
CALL WAIT_NET

2:【DhcpNameServer】DHCP 获得地址需要时间,所以等10秒。 建议用PCIP查询网卡
PCIP ?,,,,0?&&网卡名称   //第一个网卡
FIND $X=X%&网卡名称%, MESS ▉ 是否尝试用其他方式安装网卡驱动? @ 通知:无法读取网卡信息! #YN *0 $Y ! EXEC %Windir%\PENetwork\PENetwork.exe
回复

使用道具 举报

4036#
发表于 2012-12-24 10:26:54 | 只看该作者

回复 #4284 2012abc19701 的帖子

谢谢指导。
那个txet在win8pe下覆盖上一行文字的问题期待解决。

另外1208版的load命令不需要在ini上加引号了吗?我有些代码没有加好像也行。
回复

使用道具 举报

4037#
发表于 2012-12-24 10:56:21 | 只看该作者

回复 #4284 2012abc19701 的帖子

用第二个命令可能比较合适一些。能够判断网卡安装了,网络基本就没有问题了。

但是如果是无线网络,一般会有一个虚拟的网卡。就存在两个网卡。
怎么修改这个命令判断准确一些?

另外你的“网卡名称”是变量还是常量?
我希望这个命令是对任何机器都能够生效的。
回复

使用道具 举报

4038#
发表于 2012-12-24 11:29:31 | 只看该作者

回复 #4284 2012abc19701 的帖子

老大的代码严谨,学习中。
回复

使用道具 举报

4039#
 楼主| 发表于 2012-12-24 14:52:20 | 只看该作者
原帖由 yidawpf 于 2012-12-24 10:56 发表
用第二个命令可能比较合适一些。能够判断网卡安装了,网络基本就没有问题了。

但是如果是无线网络,一般会有一个虚拟的网卡。就存在两个网卡。
怎么修改这个命令判断准确一些?

另外你的“网卡名称”是变 ...



A1:“网卡名称”是一个变量的名称,可以是人一名字,如name1


A2: 但是如果是无线网络,一般会有一个虚拟的网卡。就存在两个网卡 ..... ?
没试过。
1) 如果是在安装该网卡的驱动后才出现的,那说明该网卡安装了,没问题。

2) 否则。
      在安装该网卡驱动前判断0网卡,如果有0网卡,后面判断1网卡。
回复

使用道具 举报

4040#
 楼主| 发表于 2012-12-24 15:03:05 | 只看该作者

[更新376#2825:PECMD2012.1.70.1_Win32.多窗口多线程.裸机系统2.1.1+18M酷MiniPE

[更新402#4289:PECMD2012.1.70.1_Win32.多窗口多线程.裸机系统2.1.1+18M酷MiniPE

PECMD2012.1.70.3.2-1224.多窗口线程孵化版_win32.sfx.zip(已升级) +裸机系统2.1.1 抢鲜版 + 18M-COOL  MiniPE(已升级)

1: ERROR &&ERROR为命令错误码

2: PECMD.exe 退出码为最后的命令错误码。0为无错误。负数则为1。
再CMD批处理中可以用 IF ERRORLEVEL 错误码 或%ERRORLELVEL%变量引用
在命令行必须用start /wait 才能取得PECMD.exe 错误码
   start /wait PECMD   PECMD命令


3:EXIT= [错误码]    //设定错误码,默认0
如:
EXIT 123

回复

使用道具 举报

4041#
 楼主| 发表于 2012-12-24 15:20:33 | 只看该作者
原帖由 wysk  发表
使用if errorlevel 1 检测不到错误,而PECMD4.0是可以的.

还有使用PECMD MESS- 弹出的提示一闪就消失了,根本起不到消息的作用.

...


A1:你是在CMD批处理中调用吧。
引用 PECMD.EXE 退出码, 需要 PECMD2012.1.70.3.2-1224.多窗口线程孵化版_win32.sfx.zip;以前的版本不返回有效 退出码,始终为0.

PECMD.exe 退出码为最后的命令错误码。0为无错误。负数则为1。
在CMD批处理中可以用 IF ERRORLEVEL 错误码 或%ERRORLELVEL%变量引用
在命令行必须用start /wait 才能取得PECMD.exe 错误码
   start /wait PECMD   PECMD命令



2: PECMD MESS-  。。。?
A2:
这个需要主流程不能退出; 主流程退出时,对话框也自动退出。

1)
MESS-  aaa
//干其他活
WAIT  10000

2) 想在主流程退出时,对话框不自动退出。可以用THREAD* MESS。 THREAD比MESS模式要多。
_SUB MYMESS
    ENVI &&CMD=THREAD* MESS %*
    %&CMD%
_END

MYMESS  hello @ #OK*8000

或直接:

THREAD* MESS hello @ #OK*8000


回复

使用道具 举报

4042#
发表于 2012-12-24 15:27:14 | 只看该作者

回复 #4285 yidawpf 的帖子

如果你的LOAD 带参数就一定要用""
如果LOAD 不带参数,可以不用""
PECMD2012的LOAD可带参数的
回复

使用道具 举报

4043#
 楼主| 发表于 2012-12-24 16:30:03 | 只看该作者
原帖由 andos 于 2012-12-24 15:27 发表
如果你的LOAD 带参数就一定要用""
如果LOAD 不带参数,可以不用""
PECMD2012的LOAD可带参数的


1: 脚本路径文件名参数
如果脚本路径文件名参数有显式(字面上)的空字符时,必须要引号刮起来, 否则前部分当作文件名, 后部分当作参数。
否则,路径文件名参数不用加引号刮起来,当然也可加引号刮起来。加引号刮起来总是不会错的。

脚本中%0 %~0引用

下面必须要引号刮起来,不能省引号。
LOAD   "C:\Program Files\aa.ini"
LOAD   "C:\Program Files\aa.ini"  1   2  3


下面不用加引号刮起来,当然也可加引号刮起来。
LOAD   C:\PROGRA~1\aa.ini
LOAD   C:\PROGRA~1\aa.ini  1   2  3

LOAD   "H:\PROGRA~1\aa.ini"
LOAD   "H:\PROGRA~1\aa.ini"  1   2  3



ENVI PRGS=C:\Program Files

下面没有字面上的空字符,不用加引号刮起来,当然也可加引号刮起来。
LOAD   %PRGS%\aa.ini
LOAD   %PRGS%\aa.ini  1   2  3

LOAD   "%PRGS%\aa.ini"
LOAD   "%PRGS%\aa.ini"  1   2  3


2:脚路的某参数
  (1)如果脚路的某参数有空字符时,必须要引号刮起来, 否则被分成多个参数。
  (2)否则,该参数不要引号刮起来。如果加了引号,意义可能不同,引号也是参数的一部分,取决于脚本内如何处理。

脚本中%1 %2 %3 ... %~1 %~2 %~3...引用; %*为%1 开始的全部,参数中间的空格数都不变。

LOAD   "C:\Program Files\aa.ini"  "1 a"   "2  xxxx"  333  "444"  55555   

aa.ini的部分参数:
参数1为["1 a"]

参数3为[333]
参数4为["444"] 而不是 [444]


LOAD   "C:\Program Files\aa.ini"  1 a   "2  xxxx"  333  "444"  55555
"1 a"  没有引号,当作2个参数

aa.ini的部分参数:
参数1为[1]
参数2为[a]
参数4为[333]
参数5为["444"]





[ 本帖最后由 2012abc19701 于 2012-12-24 18:12 编辑 ]
回复

使用道具 举报

4044#
 楼主| 发表于 2012-12-24 16:37:58 | 只看该作者

CPU.WCS 已更新,能自动判断CPU个数

CPU.WCS 已更新,能自动判断CPU个数
间见4272楼
※FIND --pid 变量名   //返回: 空闲时间 总时间 CPU个数 1秒的时钟数 一时钟的100ns数。

已加入下载包中。
回复

使用道具 举报

4045#
发表于 2012-12-24 17:41:55 | 只看该作者
楼主会考虑出 64bit 版本呢!?
回复

使用道具 举报

4046#
 楼主| 发表于 2012-12-24 18:17:34 | 只看该作者
原帖由 nu852 于 2012-12-24 17:41 发表
楼主会考虑出 64bit 版本呢!?

安装 MS自带的32为模拟包(不大), 64位系统上可以运行PECMD32。
回复

使用道具 举报

4047#
 楼主| 发表于 2012-12-24 20:05:45 | 只看该作者
原帖由 yidawpf 于 2012-12-24 10:26 发表
谢谢指导。
那个txet在win8pe下覆盖上一行文字的问题期待解决。


Q: 那个txet在win8pe下覆盖上一行文字的问题期待解决。
A:
TEXT 11111111111111111\n22222222222222222222\n33333333333333333
在win8PE下什么样的?给个贴图吧。也给个pecmd4.0在win8pe上的效果图。
不是下面XP下的样子吗?


[ 本帖最后由 2012abc19701 于 2012-12-24 20:09 编辑 ]
回复

使用道具 举报

4048#
发表于 2012-12-24 20:37:59 | 只看该作者

回复 #4296 2012abc19701 的帖子

我的意思是如果text有两处,不是一个2行。
比如:
TEXT 初始化 Windows 8 PE 迷你维护系统 ... #0xFFFFFF L35 T720 R500 B764 $20

TEXT 加载扩展内核……

第一个TXT会覆盖第二行。
回复

使用道具 举报

4049#
发表于 2012-12-24 20:42:30 | 只看该作者

回复 #4293 2012abc19701 的帖子

...这2天刚整好利用剩余cpu 调用多线程安装软件..pecmd就孵化了,,,哎又得整改了
不过这次就能精准判断了
不知道双核4线程  cpu 是判断出来几个的???

在单核双线程上试了 个数为2

[ 本帖最后由 diannao338 于 2012-12-25 23:21 编辑 ]
回复

使用道具 举报

4050#
 楼主| 发表于 2012-12-24 23:20:55 | 只看该作者
原帖由 yidawpf 于 2012-12-24 20:37 发表
我的意思是如果text有两处,不是一个2行。
比如:
TEXT 初始化 Windows 8 PE 迷你维护系统 ... #0xFFFFFF L35 T720 R500 B764 $20

TEXT 加载扩展内核……

第一个TXT会覆盖第二行。



1:  "第一个TXT会覆盖第二行" 什么样子? 能给个贴图即对应说明吗? 用画笔画也可。


2: 如果要写在不同高度,可以调节T、B参数
TEXT 初始化 Windows 8 PE 迷你维护系统 ...   #0xFFFF L35 T20 R500 B64 $20
TEXT 加载扩展内核……    #0xFFFF L35 T60 R500 B104 $20

3:试试
TEXT 初始化 Windows 8 PE 迷你维护系统 ...   #0xFFFF L35 T20 R500 B64 $20
WAIT 1700  //干其它活
TEAM TEXT | WAIT 100| TEXT 加载扩展内核……    *



清除模式:先清除旧的,在等100ms,再用非清除模式。
非清除模式:直接使用。


4: 试试 PECMD2012.1.70.3.2-1224-2.多窗口线程孵化版_win32.sfx.zip
3:试试
TEXT 初始化 Windows 8 PE 迷你维护系统 ...   #0xFFFF L35 T20 R500 B64 $20
WAIT 1700  //干其它活
TEXT 加载扩展内核……  

正常了。



[ 本帖最后由 2012abc19701 于 2012-12-24 23:59 编辑 ]
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-9-27 10:18

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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