无忧启动论坛

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

[已解决] 请教PECMD条件判断语句写法

[复制链接]
跳转到指定楼层
1#
发表于 2022-4-18 18:18:45 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lhc0688 于 2022-5-9 00:27 编辑

最后解决结果:

仔细测试后,发现Edge不能运行是因为PE自身原因,不是下级目录重名exe问题,这样的话,语句就可以简化很多了;
参考8267732972012胡言乱语两位朋友的代码,稍作修改写为:

FORX /S:6 \360chrome.exe,My360,1,LINK %Desktop%\360浏览器,%My360%
IFEX %desktop%\360浏览器.lnk,!
{
        FORX /S:6 \chrome.exe,MyGoogle,1,LINK %Desktop%\Google浏览器,%MyGoogle%
        IFEX %desktop%\Google浏览器.lnk,!
        {
                FORX /S:6 \firefox.exe,Myff,1,LINK %Desktop%\火狐浏览器,%Myff%
                IFEX %desktop%\火狐浏览器.lnk,!
                {
                        FORX /S:6 \QQBrowser.exe,MyQQ,1,LINK %Desktop%\QQ浏览器,%MyQQ%
                        IFEX %desktop%\QQ浏览器.lnk,!
                        {
                                FORX /S:6 \chrome.VisualElementsManifest.xml,Mycent,1,
                                {
                                FDIR fPath=%Mycent%
                                LINK %Desktop%\百分百浏览器,%fPath%\chrome.exe
                                }
                                IFEX %desktop%\百分百浏览器.lnk,!
                                {
                                        FORX /S:6 \twinkstar.exe,Mystar,1,LINK %Desktop%\星愿浏览器,%Mystar%
                                        IFEX %desktop%\星愿浏览器.lnk,!
                                        {
                                                FORX /S:6 \msedge.exe,Myedge,1,LINK %Desktop%\Edge浏览器,%Myedge%
                                        }
                                }
                        }
                }
        }
}


实测正常能执行;

问题暂时算解决,感谢8267732972012胡言乱语 两位坛友!如果高手有更好的写法,欢迎指导。

已知存在的问题:
1、运行速度非常慢;
2、Google浏览器和百分百浏览器执行程序重名,如果百分百在前,则会导致结果出错(快捷图标名字错,但仍可运行);

----------------------------------------------------------------------------------
原求助问题:

PETools.ini 中有这样的命令,目的是想按顺序查找到实机系统里已有的浏览器,并把找到的第一个建立桌面快捷方式:

FORX /S:6 \360chrome.exe,My360,1,LINK %Desktop%\360浏览器,%My360%
FORX /S:6 \msedge.exe,Myedge,1,LINK %Desktop%\Edge浏览器,%Myedge%
FORX /S:6 \chrome.exe,MyGoogle,1,LINK %Desktop%\Google浏览器,%MyGoogle%

现在想写成条件判断语句,如果找到上一个,就不再继续找下面的,查看PECMD帮助里面IFEX语法太复杂实在看不懂,故请教下坛里高手,这个判断语句应该怎样写?还请代码大佬能不吝赐教,先谢!

另外,上面 FORX 查找结果还遇到个小问题,就是找到的执行程序并非浏览器自带的,而是绿化版新增加的,这会导致创建快捷图标后不能正常运行,比如:Edge浏览器,目录结构如下:

Edge\msedge.exe                          (这个是绿化版另加的)
Edge\98.0.1108.62\msedge.exe      (这个是原程序的)

找到第一个后,建立桌面快捷方式,不能正常运行,有没可能再判断下级目录是否有同名exe并选择后者呢?

以上问题一并请赐教,谢谢!




2#
 楼主| 发表于 2022-4-18 22:11:00 | 显示全部楼层
我刚自己试着写了一个,但判断好像不准确:
FORX /S:6 \360chrome.exe,My360,1,LINK %Desktop%\360浏览器,%My360%
IFEX $%My360%>0,
{*
    FORX /S:6 \msedge.exe,Myedge,1,LINK %Desktop%\Edge浏览器,%Myedge%
    IFEX $%Myedge%>0,
    {*
        FORX /S:6 \chrome.exe,MyGoogle,1,LINK %Desktop%\Google浏览器,%MyGoogle%
        IFEX $%MyGoogle%>0,
        {*
        EXIT FORX
        }
    }
}

点评

IFEX $%Myedge%>0 这个判断语句不起作用,写为 =空 也一样;  发表于 2022-4-18 23:19
回复

使用道具 举报

3#
 楼主| 发表于 2022-4-18 22:37:57 | 显示全部楼层
826773297 发表于 2022-4-18 21:31
FORX /S \360chrome.exe,My360,1,LINK %Desktop%\360浏览器,%My360%
FIND $%My360%=,
{

测试了下,有两个问题:
1、Edge 部分好像并未判断准确,取的还是前一个,未取下级目录里的;
2、整体执行变的很慢,好像是全部循环完毕后出的结果,是否依据条件判断逐步执行呢?

三个结果确实执行了判断,能依次选择;

点评

没取下级目录是因为进行了特定文件夹判断,如果下级目录是带.的版本号目录则建立该快捷方式,否则不建立 速度慢是因为搜索了所有目录  详情 回复 发表于 2022-4-19 08:08
回复

使用道具 举报

4#
 楼主| 发表于 2022-4-19 09:05:27 | 显示全部楼层
2012胡言乱语 发表于 2022-4-19 00:18
以文件名盲收6级目录,收到就停止后面的命令 肯定不准

列了几个大致可能用到的浏览器:

360chrome.exe       360浏览器
Chrome.exe             谷歌
msedge.exe             Edge
firefox.exe                火狐

QQBrowser.exe       QQ浏览器
chrome.exe             百分百浏览器
twinkstar.exe           星愿浏览器  


看来确实存在按文件名不准问题,(Chrome.exe谷歌、chrome.exe 百分百浏览器)重名;



点评

这么多浏览器 而且每一个都有很多版 对每一个浏览器的结构也不是很了解 问题不是代码怎么写 而是找不到有效的思路  详情 回复 发表于 2022-4-19 13:05
回复

使用道具 举报

5#
 楼主| 发表于 2022-4-19 13:15:21 | 显示全部楼层
826773297 发表于 2022-4-19 08:13
FORX /S \360chrome.exe,My360,1,LINK %Desktop%\360浏览器,%My360%
FIND $%My360%=,
{

测试了,Myedge部分还是未取下级目录,其它都正常。

点评

没有取子目录应该是你电脑有多个同名exe,刚好找到的这个exe没有子目录存在同名文件,你自己查一下,不再发代码了  详情 回复 发表于 2022-4-19 16:43
回复

使用道具 举报

6#
 楼主| 发表于 2022-4-19 13:24:20 | 显示全部楼层
2012胡言乱语 发表于 2022-4-19 13:05
这么多浏览器 而且每一个都有很多版 对每一个浏览器的结构也不是很了解
问题不是代码怎么写 而是找不到 ...

确实如您所言,这种查找方式很不严谨,而且效率也明显低下;不过暂时还想不出更好的方式,而且我想这个仅是一个补充功能,网络版的PE,在不内置浏览器、QQ情况下,如果硬盘上有,就列出供选用,真列的不准也无所谓,而且是在PE桌面已经生成后再列,不占用PE时间;
回复

使用道具 举报

7#
 楼主| 发表于 2022-4-19 13:32:29 | 显示全部楼层
还有个思路,能否把 【搜索、创建桌面图标】部分写成单独的子程序,应用exe文件名、快捷图标名用变量,这样IFEX语句是否能更简单、方便扩充?
回复

使用道具 举报

8#
 楼主| 发表于 2022-4-19 16:33:09 | 显示全部楼层
2012胡言乱语 发表于 2022-4-19 13:47
CALL A
_SUB A
      TEAM ENVI &&My360=|ENVI &&QUD=0

收到!谢谢指点!不过这种子过程方式我得先体会一下看怎么样,代码小白有点勉为其难。
回复

使用道具 举报

9#
 楼主| 发表于 2022-4-20 13:14:43 | 显示全部楼层
狼人72105 发表于 2022-4-20 06:53
我只想知道,你的98EDGE浏览器,是怎么在SYSTEM账户下,运行的。。。你们跑题了。。。

最后解决结果:

仔细测试后,发现Edge不能运行是因为PE自身原因,不是下级目录重名exe问题
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-6-19 11:01

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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