无忧启动论坛

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

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

    [复制链接]
5671#
 楼主| 发表于 2013-5-6 20:57:16 | 只看该作者
可乐百分所有 发表于 2013-5-6 20:01
有没有这么一个命令,挂载ud区iso里的wim映像


WIM 得拷出来, 在 MOUN
或者 你的 用法 高知 WIM 的作者。
回复

使用道具 举报

5672#
发表于 2013-5-6 21:24:57 | 只看该作者
本帖最后由 hhh333 于 2013-5-6 21:50 编辑
mdyblog 发表于 2013-5-6 12:22
这个也兼容下来了。并且是默认行为。即默认为ENVIMODE兼容模式。

ENVI^  EnviMode=1


如:EXEC =!CMD.EXE /C "7z.exe x NET_PART%BootOS%.7z -y -aos -o"%windir%""
如果%BootOS%没有定义,则等同于EXEC =!CMD.EXE /C "7z.exe x NET_PART.7z -y -aos -o"%windir%""
但老九的4.0会失败。但在前面加一句:FIND $%BootOS%=,ENVI BootOS=
就没有问题了。
(刚才看了一下,LZ的2月3号的这个也是一样的,哦好象以前不是这样的,我大致理解了,如果BootOS没有定义,根本不会以空字符代替%BootOS%,而是原样输出了,这不合理吧?与DOS中的用法也不一样,望改之。)

老九的4.0就有这个问题,LZ的不会有问题,这应该说明了老九的4.0未定义变量不为空,应该是一个较严重的bug。这个错比较难查。
4.0还有一个错比较难查,即load脚本中再有LOAD就出问题。也即出现了LOAD嵌套。
回复

使用道具 举报

5673#
发表于 2013-5-6 21:41:42 | 只看该作者
不是很有必要弄个简化版吧,做界面工具的话直接注册一下脚本类型关联到 pecmd 加载就可以了,要保护代码的话可以用压缩格式,这样只有代码比再加个简化版还小了。
回复

使用道具 举报

5674#
 楼主| 发表于 2013-5-6 23:11:03 | 只看该作者
hhh333 发表于 2013-5-6 21:24
如:EXEC =!CMD.EXE /C "7z.exe x NET_PART%BootOS%.7z -y -aos -o"%windir%""
如果%BootOS%没有定义, ...

前面 加上 ENVI^  EnviMode=1
就可以了。
默认兼容 4.0  的方式

ENVI^  EnviMode=1
MESS 【%ABC%】 @ #OK
回复

使用道具 举报

5675#
发表于 2013-5-6 23:34:44 | 只看该作者
2010qaqz111 发表于 2013-5-6 21:41
不是很有必要弄个简化版吧,做界面工具的话直接注册一下脚本类型关联到 pecmd 加载就可以了,要保护代码的话 ...

我发一个工具给你就知道了: H3系列PE向导.7z (81.51 KB, 下载次数: 4)
这个不一定要在PE下运行的,可以独立地在正常系统中运行,脚本内置,直接运行,老九的3.9版本做的。

与你理解的关联什么的不是一回事。
回复

使用道具 举报

5676#
发表于 2013-5-6 23:37:59 | 只看该作者
本帖最后由 hhh333 于 2013-5-6 23:43 编辑
mdyblog 发表于 2013-5-6 23:11
前面 加上 ENVI^  EnviMode=1
就可以了。
默认兼容 4.0  的方式


这个我认为是4.0的BUG,既然采取DOS一样的表示法(用%来引用环境变量),就应该与DOS用法一致。
在DOS中没有定义的就是空。PECMD中也应该如此,否则不好理解。这个错误的或者说不合理的东西还兼容没必要吧。 如果再加ENVI^  EnviMode=1 很不好理解,也增加复杂性。
回复

使用道具 举报

5677#
 楼主| 发表于 2013-5-6 23:46:34 | 只看该作者
hhh333 发表于 2013-5-6 23:37
这个我认为是4.0的BUG,既然采取DOS一样的表示法(用%来引用环境变量),就应该与DOS用法一致。
在DOS ...

CMD.EXE  也是这样。
回复

使用道具 举报

5678#
发表于 2013-5-7 00:28:09 | 只看该作者
mdyblog 发表于 2013-5-6 23:46
CMD.EXE  也是这样。

也对啊,是我理解错误,我再仔细看一下。
回复

使用道具 举报

5679#
发表于 2013-5-7 08:50:33 | 只看该作者
mdyblog 发表于 2013-5-6 23:46
CMD.EXE  也是这样。


看下面批处理
set a=abcdef%b%
echo %a%

则结果还是a=abcdef,看来不能简单地以echo来看结果。
回复

使用道具 举报

5680#
发表于 2013-5-7 11:51:54 | 只看该作者
win8pe x64环境下HOTK设置热键无法实现,不知是什么原因。HOTK命令在PE里需要什么依赖文件吗?
回复

使用道具 举报

5681#
 楼主| 发表于 2013-5-7 15:02:17 | 只看该作者
hhh333 发表于 2013-5-7 08:50
看下面批处理
set a=abcdef%b%
echo %a%

测试结果: http://pan.baidu.com/share/link?shareid=467790&uk=3962464512#snap1.gif
  (发不了图片, 网盘上下)
回复

使用道具 举报

5682#
发表于 2013-5-7 16:10:59 | 只看该作者
本帖最后由 hhh333 于 2013-5-7 16:22 编辑
mdyblog 发表于 2013-5-7 15:02
测试结果: http://pan.baidu.com/share/link? ... 962464512#snap1.gif
  (发不了图片, ...


放到批处理中试一下,不要在命令行状态输入。命令行状态它当然不会代入,批处理中就会以空值代入,说明我以前的说法是正确的。
我经常使用
EXEC =!CMD.EXE /C "7z.exe x Wireless%BootOS%.7z -y -aos -o"%windir%""   (PECMD脚本中)
7z.exe x Wireless%BootOS%.7z -y -aos -o"%windir%"             (批处理中)

在BootOS已经定义时结果一样,但如果未定义,则结果不同,批处理能够执行,脚本中出错,必须要在执行前加一句FIND $%BootOS%=,ENVI BootOS=  就没有问题。
回复

使用道具 举报

5683#
 楼主| 发表于 2013-5-7 16:30:18 | 只看该作者
ling3882688 发表于 2013-5-7 11:51
win8pe x64环境下HOTK设置热键无法实现,不知是什么原因。HOTK命令在PE里需要什么依赖文件吗?

用  USM_8PE_x64_UEFI_v1.0.0.3.iso  测试: 正常。
需要在 PECMD.INI 中用,且在 SHEL 前执行。
不依赖什么。
回复

使用道具 举报

5684#
 楼主| 发表于 2013-5-7 18:00:42 | 只看该作者
hhh333 发表于 2013-5-7 16:10
放到批处理中试一下,不要在命令行状态输入。命令行状态它当然不会代入,批处理中就会以空值代入,说明 ...

呵呵,还真的呢!!
MS  什么时候改的,也不通知我一下。

还是兼容 4.0 吧。  毕竟 有很多经验是4.0 的。 有很多脚本是4.0 的。
或者加一句 ENVI^  EnviMode=1
回复

使用道具 举报

5685#
发表于 2013-5-7 19:03:44 | 只看该作者
mdyblog 发表于 2013-5-7 18:00
呵呵,还真的呢!!
MS  什么时候改的,也不通知我一下。

原来老大这么幽默
回复

使用道具 举报

5686#
发表于 2013-5-7 20:58:58 | 只看该作者
本帖最后由 hhh333 于 2013-5-7 21:01 编辑
mdyblog 发表于 2013-5-7 18:00
呵呵,还真的呢!!
MS  什么时候改的,也不通知我一下。


改了更好,与DOS一致,也不易出错,弄精简版的时候改过来吧。这个改过来不会影响4.0脚本的运行。不要连BUG都兼容吧。
回复

使用道具 举报

5687#
发表于 2013-5-7 22:34:32 | 只看该作者
本帖最后由 2010qaqz111 于 2013-5-7 22:40 编辑
hhh333 发表于 2013-5-6 23:34
我发一个工具给你就知道了:
这个不一定要在PE下运行的,可以独立地在正常系统中运行,脚本内置,直接运 ...


这个是把脚本嵌入程序内封装成一个独立的工具的用法吧,在正常系统也可以用,这个确实有些价值,对于分发很有用。

前面说的关联在正常系统也可以用,如果仅仅是在做维护或者技术宅这个圈子里还好说,但是对于普通用户来说就有点麻烦了,嵌入脚本分发的方式对于普通用户来说确实是最好的。
回复

使用道具 举报

5688#
发表于 2013-5-8 08:43:25 | 只看该作者
mdyblog 发表于 2013-5-7 18:00
呵呵,还真的呢!!
MS  什么时候改的,也不通知我一下。

再请教一下老大,PECMD有没有写入文本的内置命令?如:
echo. >ART_DB.rgf

回复

使用道具 举报

5689#
 楼主| 发表于 2013-5-8 10:03:02 | 只看该作者
527104427 发表于 2013-5-8 08:43
再请教一下老大,PECMD有没有写入文本的内置命令?如:
echo. >ART_DB.rgf

WRIT 命令
参见WRIT 帮助

WRIT C:\BOOT.INI,+0,C:\AVLDR.NT6=Window_7_PE
就在 C:\BOOT.INI 最后面加一行 C:\AVLDR.NT6=Window_7_PE
回复

使用道具 举报

5690#
发表于 2013-5-8 10:15:40 | 只看该作者
mdyblog 发表于 2013-5-8 10:03
WRIT 命令
参见WRIT 帮助

如果要清空一个文本呢?这个命令似乎只能操作一行.
回复

使用道具 举报

5691#
 楼主| 发表于 2013-5-8 10:15:42 | 只看该作者
本帖最后由 mdyblog 于 2013-5-8 10:25 编辑
hhh333 发表于 2013-5-7 20:58
改了更好,与DOS一致,也不易出错,弄精简版的时候改过来吧。这个改过来不会影响4.0脚本的运行。不要连 ...

兼容4.0 还必须 那么用。
考虑下面2个 要求:
1> 程序需要输出 %ABC% 这样的文本。
2>解释多级变量--数组
     ENVI A1=AAA
     ENVI A2=BBB
     ENVI  I=1
     MESS  [%A%I%%%C%]@ #OK    //输出 [AAA%C%]

同时达到 上面2个要求, “没有的变变量不解释”  就很自然了。


2: PECMD2012
ENVI^  ENVIMODE=1

可以 不这样,是因为 两者 分开 处理。 在PECMD2012中 2)由单独处理命令 ENVI~   ENVI~~

     ENVI^  ENVIMODE=1
     ENVI A1=AAA
     ENVI A2=BBB
     ENVI  I=1
     ENVI~ AI=A%I%
     MESS  [%AI%%C%]@ #OK    //输出 [AAA]

3: WINDOWS 内部机制 的确是 “没有的变变量不解释(原样保留)”,WINDOWS 提供了一个专门解释字符串的API,效果就是这样的。


回复

使用道具 举报

5692#
 楼主| 发表于 2013-5-8 10:21:42 | 只看该作者
527104427 发表于 2013-5-8 10:15
如果要清空一个文本呢?这个命令似乎只能操作一行.

法1: PUTF -dd -len=0  a.txt,0,zero

法2: exec  !=cmd /c  type>a.txt  
回复

使用道具 举报

5693#
发表于 2013-5-8 10:50:39 | 只看该作者
mdyblog 发表于 2013-5-8 10:21
法1: PUTF -dd -len=0  a.txt,0,zero

法2: exec  !=cmd /c  type>a.txt


多谢,可以了。我只需要PECMD的内置命令,调用CMD的就不要了!
回复

使用道具 举报

5694#
发表于 2013-5-8 11:01:20 | 只看该作者
本帖最后由 hhh333 于 2013-5-8 11:12 编辑
mdyblog 发表于 2013-5-8 10:15
兼容4.0 还必须 那么用。
考虑下面2个 要求:
1> 程序需要输出 %ABC% 这样的文本。


这个关系不是很大,我可以用“FIND $%BootOS%=,ENVI BootOS=”来解决(用那个什么envi ^xxx=1的形式我觉得语法不规范,随意性较大),不过用了ENVI BootOS=,为什么就可以了还希望解答一下,“ENVI BootOS=”的意思不是删除变量而是定义变量为空值?

关于输出%c%这样的符号,好象是用%%来转义的:
  1. set a=abcdef%b%
  2. echo %a%
  3. set c=abcdef%%b%%
  4. echo %c%
复制代码
回复

使用道具 举报

5695#
 楼主| 发表于 2013-5-8 11:09:59 | 只看该作者
本帖最后由 mdyblog 于 2013-5-8 11:18 编辑
hhh333 发表于 2013-5-8 11:01
这个关系不是很大,关于输出%c%这样的符号,好象是用%%来转义的:



1:
问题涉及到数组变量,就复杂了。
%A%I%%    // 变量A1
%%I%A%    //变量1A

关键是4.0 已经这样了,且其出发点有合理之处(数组变量),也只有兼容了。

2: 可以将
ENVI^ EnviMode=1
加到 程序的资源 SCRIPTINIT\100\2052
这样  PECMD 默认就是 “不存在的变量当作空”
回复

使用道具 举报

5696#
发表于 2013-5-8 13:49:29 | 只看该作者
load 命令是不是有点问题,我在配置文件里加载load \tools\drvlink.ini是创建启动驱动的快捷方式。drvlink.ini里又设置了快捷方式drv.ini文件,drv.ini里是命令启动驱动drvall.ini,当选择启动驱动后按“确认”之后,右下角一闪,就没了,无法安装驱动!
load \tools\drvlink.ini,加载一次有快捷方式,但无法命令!手动运行drvlink.ini才可以!
但是dec 8 2012 16:35:02版本里没问题,命令完全一样,照样可以正常执行!
文字说的有点乱,上传了文件!


配置文件 新建文件夹 (2).zip (32.93 KB, 下载次数: 1)
回复

使用道具 举报

5697#
 楼主| 发表于 2013-5-8 14:43:12 | 只看该作者
可乐百分所有 发表于 2013-5-8 13:49
load 命令是不是有点问题,我在配置文件里加载load \tools\drvlink.ini是创建启动驱动的快捷方式。drvlink. ...

加一个LOGS 看看。
LOGS **2  *D:\X.LOG
回复

使用道具 举报

5698#
发表于 2013-5-8 21:19:28 | 只看该作者
mdyblog 发表于 2013-5-8 14:43
加一个LOGS 看看。
LOGS **2  *D:\X.LOG

加logs,发现启用网络时,所有服务无法启动,解压cab包提示数据不可用,还有fbinst提取ud区文件命令,报错  函数不正确!发现用一个ini配置去加载另一个配置就不行了,用了上图的2012很正常!
回复

使用道具 举报

5699#
 楼主| 发表于 2013-5-8 21:26:56 | 只看该作者
本帖最后由 mdyblog 于 2013-5-8 21:57 编辑
hhh333 发表于 2013-5-8 11:01
这个关系不是很大,我可以用“FIND $%BootOS%=,ENVI BootOS=”来解决(用那个什么envi ^xxx=1的形式我觉 ...

>>新技术测试: http://pan.baidu.com/share/link? ... uk=3962464512#PECMD测试.精简版.rar
>> 开启DEP 后是否正常运行;没有内存访问错误。
回复

使用道具 举报

5700#
 楼主| 发表于 2013-5-8 21:29:00 | 只看该作者
本帖最后由 mdyblog 于 2013-5-8 22:02 编辑
可乐百分所有 发表于 2013-5-8 21:19
加logs,发现启用网络时,所有服务无法启动,解压cab包提示数据不可用,还有fbinst提取ud区文件命令,报错 ...


写个简单的测试, 10行左右。
去掉和问题无关的行

附上 LOG 文件。

看看 你的 fbinst 到底放到那个目录,
%SystemRoot%\SYSTEM32\
%SystemRoot%\SysWOW64\

看你的程序, 应该放到 %SystemRoot%\SYSTEM32\


如果在  %SystemRoot%\SysWOW64\

EXEC =!%SystemRoot%\SYSTEM32\fbinst

应该为
EXEC =!%SystemRoot%\SysWOW64\fbinst
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-8-20 12:03

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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