无忧启动论坛

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

发一个重新写的petools搜索配置(第三版,修正)

  [复制链接]
31#
发表于 2009-12-23 14:08:32 | 只看该作者
原帖由 hhh333 于 2009-12-23 13:17 发表
用法:(当然先要将chenall的文件存为PETOOLS_LINK.CMD)
1、用批处理调用此文件:建一个如下的批处理,与chenall的文件放在同一个地方即可运行它(chenall的说明中调用法是错误的)@ECHO OFF
REM 搜索PETOO ...


谢谢H大大,成功搜索PETOOLS目录并加载到开始菜单
回复

使用道具 举报

32#
发表于 2009-12-23 16:45:08 | 只看该作者

对 chenall 老大 petools第三版的小建议

先说明下 俺对chenall 老大的敬仰之心有如涛涛江水............

这只是个小建议,可能是我把复杂问题简单化了

1.感觉一般我们能把程序加入到 petools 文件夹,都是先要经过一些整理的,或者在下载这个程序时,文件夹里已经有了 setup.cmd,内容包含了注册等信息,如直接用第三版 会重复一些安装步骤,还不如大家形成习惯,加每个程序时,都写一个setup.cmd,把第三版的注册等过程序免掉。面面俱到没有错,可有一些规则还是好的,免得乱。

2.用第三版调用 setup.cmd 时,不知何故,本来有n个setup.cmd,但只能执行一个,可能是用 “Call" 命令,在第一个setup.cmd执行到 exit 后把主程序也关掉了,又或者是某个setup.cmd有什么问题....本来想找找原因的,可突然我想到用 pecmd 应该会更好一些,可以让每个setup.cmd单独同时执行,也可加快安装速度,试了一下,没发现什么问题,跟大家分享下:

if exist "%_TF%SETUP.lst" For /f "delims=" %%i in ('type "%_TF%SETUP.lst"') do (
    pecmd.exe exec !cmd.exe /c "%%i"
)

以下是我对这个小建议的整理,复制后存为 搜索petools.cmd ,在 winipe.ini中加入 FORX @\PETOOLS,TOOLS,0,EXEC !文件路径\搜索petools.cmd %TOOLS% 就可以了,代码中删除对.reg和.ini文件的操作,只查找 setup.cmd 或 setup.bat 并执行安装(朋友担心并行执行程序会使低配置电脑卡死,在pecmd里加了个=,变为依次执行了)
______________________________________________________________________

@echo off
if "%~1"=="" goto :eof
if not defined StartMenu goto :eof
if "%~1"=="merge" goto :merge
if not exist "%~1" goto :eof
SET "BASE_DIR=%~1"
SET "外置程序=外置程序_%~d1盘"
SET "外置程序=%StartMenu%\%外置程序::=%"
SET "_TF=%WinDir%\T_PETOOLS_%base_dir:~0,1%_"
IF EXIST "%外置程序%" RD /S /Q "%外置程序%" 2>nul
:START
DEL "%_TF%*.*" 2>nul
PUSHD "%~F1"
>%_TF%LST.lst dir /s/a/b *.wim *.cmd *.bat *.exe readme*.txt 使用说明*.txt
POPD
PUSHD "%WinDir%"
for /f "usebackq delims=" %%i in (%_TF%LST.lst) do CALL :MAKE_LINK "%%i"
ECHO.EXEC !%~F0 merge "%外置程序%" >>%_TF%LNK.INI
ECHO.FILE %_TF%LNK.INI>>%_TF%LNK.INI
START PECMD LOAD %_TF%LNK.INI
PUSHD "%~F1"
>"%_TF%SETUP.lst" dir /s/a/b setup.cmd 2>nul
>>"%_TF%SETUP.lst" dir /s/a/b setup.bat 2>nul
POPD
if exist "%_TF%SETUP.lst" For /f "delims=" %%i in ('type "%_TF%SETUP.lst"') do (
pecmd.exe exec !cmd.exe /c "%%i"
)

DEL %_TF%*.lst
POPD
goto :eof

:MAKE_LINK
SETLOCAL
if "%~1"=="" goto :eof
if /i "%~n1"=="setup" goto :eof
SET ".=%~1"
SET ".=%.:&=^&%"
SET "PETOOLS=%~dpn1"
call,SET "PETOOLS=%%PETOOLS:%BASE_DIR%=%外置程序%%%"
SET "PETOOLS=%PETOOLS:&=^&%"
echo.LINK %PETOOLS%,%.%>>%_TF%LNK.INI
GOTO :EOF

:merge
PUSHD %2||GOTO :EOF
for /d %%i in ("%~2\*") do call :merge_lnk "%%i"
POPD
goto :eof

:merge_lnk
CD /D %1||GOTO :EOF
for /d %%i in ("%~f1\*") do call %0 "%%i"
CD /D %1||GOTO :EOF
set n=
for /f %%i in ('dir /a/b') do (
    if defined n goto :eof
    set n=1
)
for /f "usebackq delims=" %%i in (`dir /a/b`) do move /y "%%i" ..\
cd..&&rd %1
goto :eof


[ 本帖最后由 网虫2008 于 2009-12-23 19:15 编辑 ]
回复

使用道具 举报

33#
发表于 2009-12-23 16:49:00 | 只看该作者
呵呵,好建议, petools以后就更好了
回复

使用道具 举报

34#
发表于 2009-12-23 16:49:36 | 只看该作者
想法不错,但要成为标准不易,用我的

EXEC !PELINK.CMD ALL2MENU "程序路径" "/AUTORUN:要运行的程序"

你上面的改成:

EXEC !PELINK.CMD ALL2MENU "\PETOOLS\" "/AUTORUN:SETUP.CMD"

就行,PELINK不会出现exit的情况的

不更方便?

对了,批文件是最好别用call,用start会好点,不会有那么多的灵异事件


[ 本帖最后由 gosun 于 2009-12-23 17:02 编辑 ]
回复

使用道具 举报

35#
发表于 2009-12-23 17:03:12 | 只看该作者
原帖由 gosun 于 2009-12-23 16:49 发表
想法不错,但要成为标准不易,用我的

EXEC !PELINK.CMD ALL2MENU "PETOOLS路径" "/AUTORUN:要运行的cmd程序"

你上面的改成:

EXEC !PELINK.CMD ALL2MENU "\PETOOLS\" "/AUTORUN:SETUP.CMD"

就行,P ...


嗯,又学习了一种方法,谢谢!

不过想了下,还是用pecmd 好一些,只要找到了就 单独 同时 的执行,会稳当和快一些吧
回复

使用道具 举报

36#
发表于 2009-12-23 17:11:40 | 只看该作者
原帖由 网虫2008 于 2009-12-23 17:03 发表


嗯,又学习了一种方法,谢谢!

不过想了下,还是用pecmd 好一些,只要找到了就 单独 同时 的执行,会稳当和快一些吧


cmd也不错的,它的start就是并行执行的,和pecmd的exec差不多,start /wait 才是串行的,
和exec加=参数一样,但并行不见得总是好的,启动时CPU使用100%,并行不见得效率会提高,
有时反而会降低,只是在适当时候并行才高效,再有就是并发执行时,有些设置会相互覆盖干扰,
可能会发生灵异事件,稳定性会下降。。。


[ 本帖最后由 gosun 于 2009-12-23 17:15 编辑 ]
回复

使用道具 举报

37#
发表于 2009-12-23 17:30:07 | 只看该作者
原帖由 gosun 于 2009-12-23 17:11 发表


cmd也不错的,它的start就是并行执行的,和pecmd的exec差不多,start /wait 才是串行的,
和exec加=参数一样,但并行不见得总是好的,启动时CPU使用100%,并行不见得效率会提高,
有时反而会降低,只是在 ...


嗯,设置会相互覆盖干扰,这点倒是值得考虑,不过 wimpe.ini加载时也是一样的存在这种问题,

--_-   怎么说呢,pecmd.exe 是每个pe里自带的,PELINK.cmd 确还要下载添加什么,麻烦呀,可以考虑加个 = 号,让setup.cmd 一项项执行

pecmd.exe exec =!cmd.exe ......
回复

使用道具 举报

38#
 楼主| 发表于 2009-12-23 18:02:27 | 只看该作者
我认为还是简单一些使用START /w 来调用,或许会比较好,因为并行时如果操作比较复杂,可能会造成死机.一般程序比较少的情况下使用并行是没有问题的,但如果需要执行的比较多,而且配置又不是很好的情况下,绝对会卡死.
回复

使用道具 举报

39#
发表于 2009-12-23 18:10:03 | 只看该作者
原帖由 chenall 于 2009-12-23 18:02 发表
我认为还是简单一些使用START /w 来调用,或许会比较好,因为并行时如果操作比较复杂,可能会造成死机.一般程序比较少的情况下使用并行是没有问题的,但如果需要执行的比较多,而且配置又不是很好的情况下,绝对会卡死.


我用 start 命令试过的,不行,,如果怕并行有问题 加个 = 号吧,一条条来执行

if exist "%_TF%SETUP.lst" For /f "delims=" %%i in ('type "%_TF%SETUP.lst"') do (
pecmd.exe exec =!cmd.exe /c "%%i"
)
回复

使用道具 举报

40#
 楼主| 发表于 2009-12-23 18:14:19 | 只看该作者
使用start 碰到exit就不会退出了.如果start /w 不行,那PECMD =执行应该会是同样的
#32的建议不错,还是有个规则会比较好,
只要SETUP.CMD和SETUP.BAT就可以了,另外再加一个SETUP.REG.就差不多了,因为有时只需要导入注册表文件就不用再写SETUP.BAT了.
回复

使用道具 举报

41#
发表于 2009-12-23 18:15:38 | 只看该作者
原帖由 网虫2008 于 2009-12-23 18:10 发表


我用 start 命令试过的,不行,,如果怕并行有问题 加个 = 号吧,一条条来执行

if exist "%_TF%SETUP.lst" For /f "delims=" %%i in ('type "%_TF%SETUP.lst"') do (
pecmd.exe exec =!cmd.exe /c "%%i"
)


用START运行批处理,如果文件名加“”的话,要用双参数:

START "%%i" "%%i"

第一个%%i是窗口名字,可以随便起,第二个才是真正调用的文件


[ 本帖最后由 gosun 于 2009-12-23 18:18 编辑 ]
回复

使用道具 举报

42#
 楼主| 发表于 2009-12-23 18:17:56 | 只看该作者
@gosun
这也是使用start命令需要注意的一点,呵呵.有时候不注意就会出错.
回复

使用道具 举报

43#
发表于 2009-12-23 19:20:27 | 只看该作者
原帖由 chenall 于 2009-12-23 18:17 发表
@gosun
这也是使用start命令需要注意的一点,呵呵.有时候不注意就会出错.


要是这样,倒不如用 pecmd exec =!  命令调用了,多个进程就多个吧,反正运行之前也一样在调用pecmd.exe的

setup.cmd 各人有各人的写法,难免有哪个 就在start上卡住了,还不如 pecmd.exe 单来,成一个是一个 -_-
回复

使用道具 举报

44#
发表于 2009-12-23 20:05:19 | 只看该作者
先谢过楼主,在下来试试。
回复

使用道具 举报

45#
发表于 2009-12-23 20:25:49 | 只看该作者
跟各位老大学到不少东西,在此一并谢过。
回复

使用道具 举报

46#
发表于 2009-12-23 21:36:12 | 只看该作者
这种搜索方式有一些不可解决的缺点:

1、这种搜索总的来说比较费时间。
2、EXE多时无办法确认主程序(当然有的人建议与目录名同名的主程序而忽略其他,但有时其他也许也要建立快捷方式。这是不可调和的)。如这几天在弄拼音输入法,SOGOU、谷歌等里面的EXE就有不少,多数是些支持程序,都建立快捷方式的话毫无用处。
3、多数软件的主程序是英文,PETOOLS中的文件一多,形成的快捷方式都是英文的,看起来特别费力。(总不能将软件的主程序都改成中文吧)
4、如果花很多时间来弄PETOOLS的目录结构,让其更合理,还不如将这些时间用来编脚本也是足够了。

因此,这种搜索只能是一种补充,多数情况下还是尽量手工编写并做成WIM包。不过大侠们的编程技术,是很值得学习的。


比较合适放PETOOLS中的程序我想有几点:

1、程序比较少,基本上只有主程序是EXE文件。
2、程序名称的字面意思清楚,最好是中文的程序名。
3、做好的WIM小工具,装载时能够自我完成初始化。
回复

使用道具 举报

47#
发表于 2009-12-24 13:12:55 | 只看该作者
为了省写点LINK而牺牲了速度不值得,LINK写好了也不见得就每天都改吧,我还是选择用LINK加以前的那个PETOOLS,反正放到PETOOLS的程序也不是很多,有时根本就没用到,一般情况下很多都打包成一个WIM外置。
回复

使用道具 举报

48#
发表于 2010-1-8 11:31:47 | 只看该作者

问题反馈

C 大:我测试了你的 petools 工具,发现有这样的问题:petools文件夹下各子文件夹下的  setup.inf 能够自动执行安装;setup_reg.reg 能够自动注册该文件,但就是 SETUP.BAT,setup.cmd 两类型的文件不能被自动执行,我在petools下 建 test 文件夹,test文件夹下就放一个setup.cmd ,setup.cmd 内就一句: md x:\test1 ,这样测试就是不成功。但双击 setup.cmd 肯定成功的。为什么呢?
要求:能否给个第三办版的纯文本格式文档给我测试?我怀疑从网页上复制下来的带有看不见的字符,造成不能正常运行的后果。谢谢大试师!

[ 本帖最后由 h99h99 于 2010-1-8 22:01 编辑 ]
回复

使用道具 举报

49#
发表于 2010-1-8 22:06:44 | 只看该作者

小小要求

要求:能否给个第三办版的纯文本格式文档给我测试?我怀疑从网页上复制下来的带有看不见的字符,造成不能正常运行的后果。谢谢大师!
回复

使用道具 举报

50#
发表于 2010-1-8 22:26:35 | 只看该作者
进来认真学习了!!!!!
回复

使用道具 举报

51#
 楼主| 发表于 2010-1-9 00:43:14 | 只看该作者
@h99h99
谢谢反馈。。

对不起,是我的错,没有经过测试,写错了符号,已经在原贴(第三版)更新。
回复

使用道具 举报

52#
发表于 2010-1-9 13:15:50 | 只看该作者

测试反馈

C 大:谢谢你百满忙之中的答复!经在测试还有问题哦,停在一个DOS 窗口不动了!
回复

使用道具 举报

53#
发表于 2010-1-9 13:34:31 | 只看该作者
初步测试反馈

用U+  USB-ZIP制作成U盘(KingStone 2G)启动,速度大约1分钟,但桌面图标不能正常显示,启动U盘盘符不显示,程序无法运行,关机死机。


不好意思,发错地方了,因当是发到

小巧精干的WINPE3.0

[ 本帖最后由 hxj 于 2010-1-9 13:38 编辑 ]
回复

使用道具 举报

54#
 楼主| 发表于 2010-1-9 19:06:49 | 只看该作者
@h99h99
OK,再改一下。
改成了使用PECMD调用了,使用START调用批处理后面要有EXIT。
回复

使用道具 举报

55#
发表于 2010-1-9 21:02:30 | 只看该作者

测试反馈

C 大:测试了,可以了,完美了,谢谢了,再见了!
回复

使用道具 举报

56#
发表于 2010-1-10 13:16:14 | 只看该作者
请问现在在一楼的PETOOLS配置文件是最新的吗???

以经是修改好了的吗?
回复

使用道具 举报

57#
发表于 2010-1-11 21:16:32 | 只看该作者
呵呵 看不懂 但还是要顶起啊
回复

使用道具 举报

58#
发表于 2010-2-28 00:43:10 | 只看该作者
大方便了程序外置

chenall在CODE说明里改过来吧


PECMD FORX @\PETOOLS,TOOLS,0,EXEC !cmd /c "PETOOLS_LINK %TOOLS%"





[ 本帖最后由 haiou327 于 2010-2-28 13:51 编辑 ]
回复

使用道具 举报

59#
发表于 2010-2-28 17:29:04 | 只看该作者
楼主真是高手,是应该多向楼主好好学习一下!
回复

使用道具 举报

60#
发表于 2010-3-3 19:29:20 | 只看该作者
收下了,感谢楼主的分享!
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-20 13:29

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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