无忧启动论坛

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

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

    [复制链接]
18361#
发表于 2023-2-12 00:10:02 | 只看该作者
本帖最后由 pkone 于 2023-2-12 00:15 编辑

我最近在学习软件绿化,需要一款启动器,它主要就是负责:
1,在软件运行前,需要导入注册表、复制文件、启动服务之类的。
2,启动软件主程序(可能要带参数)
3,在软件结束后,负责清理注册表,清除临时目录数据,关闭服务之类的。

因此我想用pecmd的内置脚本功能,达到以下目的:
当pecmd.exe被改名后(例如改为a.exe),运行它就自动加载同目录中的a.wcs,若a.wcs文件不存在则生成新的a.wcs(内容为HELP)

我的做法是用ResourceHacker编辑了pecmd.exe的101资源,加入如下代码:

FNAM tar=%MyName% //获得程序自身名字
LOAD "%tar%.wcs"  //加载自身名字.wcs

这个是可以正常启动起来的,但是当wcs文件不存在时,我不懂怎么写,才能自动生成新的wcs文件?
麻烦写个例子,我是刚接触pecmd脚本的新手,谢谢



点评

fdir dir=%MyName% fnam tar=%MyName% envi wcs="%dir%\%tar%.wcs" ifex ! %wcs%, writ %wcs%,$+0,help load %wcs%  详情 回复 发表于 2023-2-12 13:22
回复

使用道具 举报

18362#
发表于 2023-2-12 13:22:41 | 只看该作者
pkone 发表于 2023-2-12 00:10
我最近在学习软件绿化,需要一款启动器,它主要就是负责:
1,在软件运行前,需要导入注册表、复制文件、 ...

fdir dir=%MyName%
fnam tar=%MyName%
envi wcs="%dir%\%tar%.wcs"
ifex ! %wcs%, writ %wcs%,$+0,help
load %wcs%


回复

使用道具 举报

18363#
发表于 2023-2-12 14:22:07 | 只看该作者
527104427 发表于 2023-2-12 13:22
fdir dir=%MyName%
fnam tar=%MyName%
envi wcs="%dir%\%tar%.wcs"

谢谢,代码正常,达到我想要的效果了
回复

使用道具 举报

18364#
发表于 2023-2-12 19:13:57 | 只看该作者
527104427 发表于 2023-2-12 13:22
fdir dir=%MyName%
fnam tar=%MyName%
envi wcs="%dir%\%tar%.wcs"

5大,请教个问题
TIPS 正在安装,%名称%,50000,1,@L1920T1020
THREAD* DEVI C:\a\*.inf
这是一个FORX循环,里面记录了驱动路径,每个路径占一行
THREAD*开了多线程,TIPS提示就会不准确,好像是直接提示最后一行了
另外我加了个计时器,计算安装总耗时,加了THREAD*后,计时也会提前停止,在点了执行按钮后计时就直接停止了
这个问题有办法解决吗

点评

date time1 uptime forx循环, //替换成具体命令 { ...... //替换成具体命令 THREAD* team TIPS 正在安装,%名称%,50000,1,@L1920T1020| DEVI C:\a\*.inf //多个tips同时出现,估计会被挤掉,剩最  详情 回复 发表于 2023-2-12 20:28
回复

使用道具 举报

18365#
发表于 2023-2-12 20:28:55 | 只看该作者
泮安宁 发表于 2023-2-12 19:13
5大,请教个问题
TIPS 正在安装,%名称%,50000,1,@L1920T1020
THREAD* DEVI C:\a\*.inf


date time1 uptime
forx循环,   //替换成具体命令
{
    ......   //替换成具体命令
    THREAD* team TIPS 正在安装,%名称%,50000,1,@L1920T1020| DEVI C:\a\*.inf   //多个tips同时出现,估计会被挤掉,剩最后一个
}
wait -thread
date time2 uptime
calc time=(%time2% - %time1%) / 1000#2
mess. [总共用时 %time% 秒]




回复

使用道具 举报

18366#
发表于 2023-2-12 21:01:05 | 只看该作者
527104427 发表于 2023-2-12 20:28
date time1 uptime
forx循环,   //替换成具体命令
{

好的,谢谢我去试试
回复

使用道具 举报

18367#
发表于 2023-2-12 23:06:56 | 只看该作者
527104427 发表于 2023-2-12 20:28
date time1 uptime
forx循环,   //替换成具体命令
{

THREAD* team TIPS 正在安装,%名称%,50000,1,@L1920T1020| DEVI C:\a\*.inf   不能安装
team TIPS 正在安装,%名称%,50000,1,@L1920T1020|THREAD* DEVI C:\a\*.inf     可以安装
计时器怎么实时显示耗费的时间,而不是只最后显示一个最终耗时
DEVI在我电脑上不知道什么原因测试的,只有devi 路径\*.inf可以成功安装,devi 路径\a.inf和devi $路径\a.inf   devi $路径\*.inf都不能安装

点评

亮出你的代码来,我给你改 改  详情 回复 发表于 2023-2-13 12:10
回复

使用道具 举报

18368#
发表于 2023-2-13 12:10:46 | 只看该作者
泮安宁 发表于 2023-2-12 23:06
THREAD* team TIPS 正在安装,%名称%,50000,1,@L1920T1020| DEVI C:\a\*.inf   不能安装
team TIPS 正在 ...

亮出你的代码来,我给你改  改
回复

使用道具 举报

18369#
发表于 2023-2-13 15:52:37 | 只看该作者
谢谢大佬
回复

使用道具 举报

18370#
发表于 2023-2-13 16:57:16 | 只看该作者
527104427 发表于 2023-2-13 12:10
亮出你的代码来,我给你改  改
  1. READ "文本路径",*r,&path
  2. FORX *NL &path,&content,
  3. {*
  4.         MSTR -delims:| &&path,&&名称=<1><2>%&content%
  5.         TIPS 正在安装,%&&名称%,50000,1,@L1920T1020
  6.         THREAD* DEVI %&&path%\*.inf
  7. }
复制代码
文本内容为
  1. C:\Windows\System32\DriverStore\FileRepository\nvqu.inf_amd64_4845ede71994f519|NVIDIA GeForce MX110
  2. C:\Windows\System32\DriverStore\FileRepository\hdxsst.inf_amd64_328c630dad49be0a|Realtek High Definition Audio(SST)
  3. C:\Windows\System32\DriverStore\FileRepository\intcdaud.inf_amd64_ad5691824a5386fe|英特尔(R) 显示器音频
  4. C:\Windows\System32\DriverStore\FileRepository\iigd_dc_base.inf_amd64_c407eaec1856bc31|Intel(R) UHD Graphics 620
  5. C:\Windows\System32\DriverStore\FileRepository\usbvideo.inf_amd64_01eda1963fc9991c|USB Video Device
  6. C:\Windows\System32\DriverStore\FileRepository\rtsuer.inf_amd64_506fc2372033b447|Realtek USB 2.0 Card Reader
复制代码


点评

这样子呢?  详情 回复 发表于 2023-2-13 17:17
回复

使用道具 举报

18371#
发表于 2023-2-13 17:17:01 | 只看该作者
本帖最后由 红毛樱木 于 2023-2-13 17:42 编辑
  1. READ "文本路径",*r,&path
  2. FORX *NL &path,&content,
  3. {*
  4.         MSTR -delims:| &&path,&&名称=<1><2>%&content%
  5.         TIPS 正在安装,%&&名称%,50000,1,@L1920T1020
  6.         THREAD* DEVI %&&path%\*.inf
  7. }
  8. WAIT -thread
复制代码

这样子呢?------------------------------------------
THREAD*是开线程不等待模式执行代码,你这样搞好像也不对啊,那么多TIPS都重复了哎,你确定这是你想要的吗?  

点评

确实开了线程TIPS就会被重复挤掉,THREAD加上-wait后TIPS就正常了,但我感觉比THREAD*慢好多,所以就想整个计时器,但用THREAD*计时器又会提前停止,所以就来这里请教了 实在不行就把TIPS去掉了,毕竟速度最重要{:1  详情 回复 发表于 2023-2-13 18:04
回复

使用道具 举报

18372#
发表于 2023-2-13 18:04:39 | 只看该作者
红毛樱木 发表于 2023-2-13 17:17
这样子呢?------------------------------------------
THREAD*是开线程不等待模式执行代码,你这样 ...

确实开了线程TIPS就会被重复挤掉,THREAD加上-wait后TIPS就正常了,但我感觉比THREAD*慢好多,所以就想整个计时器,但用THREAD*计时器又会提前停止,所以就来这里请教了
实在不行就把TIPS去掉了,毕竟速度最重要

点评

THREAD* -WAIT就是开线程等待执行完成  详情 回复 发表于 2023-2-13 18:10
回复

使用道具 举报

18373#
发表于 2023-2-13 18:10:56 | 只看该作者
泮安宁 发表于 2023-2-13 18:04
确实开了线程TIPS就会被重复挤掉,THREAD加上-wait后TIPS就正常了,但我感觉比THREAD*慢好多,所以就想整 ...

THREAD* -WAIT就是开线程等待执行完成

点评

devi的*showdev和*rescan:fun具体怎么用的,可以写个例子吗  详情 回复 发表于 2023-2-13 19:21
回复

使用道具 举报

18374#
发表于 2023-2-13 19:21:01 | 只看该作者
红毛樱木 发表于 2023-2-13 18:10
THREAD* -WAIT就是开线程等待执行完成

devi的*showdev和*rescan:fun具体怎么用的,可以写个例子吗
回复

使用道具 举报

18375#
发表于 2023-2-15 18:55:25 | 只看该作者
这样会不出现其他BUG
回复

使用道具 举报

18376#
发表于 2023-2-15 20:06:29 | 只看该作者
楼主只悄悄的更新,也不漏个面
回复

使用道具 举报

18377#
发表于 2023-2-16 18:49:54 | 只看该作者
envi^ envimode=1
set &v=123
envi v=999
envi v=
mess. %&V% %v% //结果显示 123 123 ,这应该是个bug.

点评

好像一直都是这样子。 不过看说明书了,貌似又对不上。 -------------------------------------------- 说明书里是这样说的: 如果不指定值,则环境变量设为空值。 如"ENVI ABC=" "ENVI &ABC=" ------  详情 回复 发表于 2023-2-17 02:28
回复

使用道具 举报

18378#
发表于 2023-2-17 02:28:10 | 只看该作者
conlin888 发表于 2023-2-16 18:49
envi^ envimode=1
set &v=123
envi v=999

好像一直都是这样子。
不过看说明书了,貌似又对不上。
--------------------------------------------
说明书里是这样说的:
如果不指定值,则环境变量设为空值。        如"ENVI ABC="   "ENVI &ABC="
--------------------------------------------
可能规则是这样子:当%v%不存在时直接等同于%&v%
下面的代码应该直接验证了这条规则:

envi^ envimode=1
set &v=123
mess. %&&v% %v%

点评

谢谢大师解惑, 那就尽量使用PE变量, 不用环境变量了.  详情 回复 发表于 2023-2-17 08:35
回复

使用道具 举报

18379#
发表于 2023-2-17 08:35:04 | 只看该作者
红毛樱木 发表于 2023-2-17 02:28
好像一直都是这样子。
不过看说明书了,貌似又对不上。
-------------------------------------------- ...

谢谢大师解惑, 那就尽量使用PE变量, 不用环境变量了.

点评

环境变量的引用可以随时 %^v%  详情 回复 发表于 2023-2-18 18:06
回复

使用道具 举报

18380#
发表于 2023-2-17 08:48:17 | 只看该作者
感谢分享
回复

使用道具 举报

18381#
发表于 2023-2-17 20:28:11 | 只看该作者
刚刚来到
回复

使用道具 举报

18382#
发表于 2023-2-18 18:06:34 | 只看该作者
conlin888 发表于 2023-2-17 08:35
谢谢大师解惑, 那就尽量使用PE变量, 不用环境变量了.

环境变量的引用可以随时
%^v%

点评

请教一下红毛老大,下面写入注册表的语句,用REGI指令怎么实现?  详情 回复 发表于 2023-2-19 23:41
回复

使用道具 举报

18383#
发表于 2023-2-19 23:41:16 | 只看该作者
红毛樱木 发表于 2023-2-18 18:06
环境变量的引用可以随时
%^v%

请教一下红毛老大,下面写入注册表的语句,用REGI指令怎么实现?
  1. EXEC -hide -exe:"%Windir%\system32\reg.exe" =REG_EXE add HKLM\SYSTEM\MountedDevices /v "#\DosDevices\W:" /t REG_BINARY /d "4D83DE910000100000000000"
复制代码


点评

REGI --16 @HKLM\SYSTEM\MountedDevices\\#\DosDevices\W:=4D 83 DE 91 00 00 10 00 00 00 00 00  详情 回复 发表于 2023-2-19 23:50
回复

使用道具 举报

18384#
发表于 2023-2-19 23:50:37 | 只看该作者
Anson4 发表于 2023-2-19 23:41
请教一下红毛老大,下面写入注册表的语句,用REGI指令怎么实现?

REGI --16 @HKLM\SYSTEM\MountedDevices\\#\DosDevices\W:=4D 83 DE 91 00 00 10 00 00 00 00 00
回复

使用道具 举报

18385#
发表于 2023-2-20 00:54:31 | 只看该作者
527104427 发表于 2023-2-19 23:50
REGI --16 @HKLM\SYSTEM\MountedDevices\\#\DosDevices\W:=4D 83 DE 91 00 00 10 00 00 00 00 00

非常有效,谢谢5大!
回复

使用道具 举报

18386#
发表于 2023-2-20 01:14:55 | 只看该作者
支持支持
回复

使用道具 举报

18387#
发表于 2023-2-20 13:06:40 | 只看该作者
给力
回复

使用道具 举报

18388#
发表于 2023-2-22 16:32:28 | 只看该作者
回复

使用道具 举报

18389#
发表于 2023-2-23 13:13:28 | 只看该作者
最近需要用到 SERV 指令查询某个系统服务的状态,返回的结果好像不对:SERV &A VSS,也不知道是不是指令没写对。帮助信息对于这个也没有具体的示例,自带示例文件中也没有。



点评

SERV ?&A VSS  详情 回复 发表于 2023-2-23 14:28
回复

使用道具 举报

18390#
发表于 2023-2-23 14:28:17 来自手机 | 只看该作者
Anson4 发表于 2023-2-23 13:13
最近需要用到 SERV 指令查询某个系统服务的状态,返回的结果好像不对:SERV &A VSS,也不知道是不是指令没 ...

SERV ?&A VSS

点评

谢谢! 执行后有返回结果了,如何才能转换成能看懂的字符呢?  详情 回复 发表于 2023-2-23 15:19
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-3 11:15

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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