无忧启动论坛

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

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

  [复制链接]
61#
 楼主| 发表于 2010-3-3 23:13:47 | 只看该作者
原帖由 haiou327 于 2010-2-28 00:43 发表
大方便了程序外置

chenall在CODE说明里改过来吧


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

82904



不加cmd /c好像也可以的吧,忘了。呵呵。
回复

使用道具 举报

62#
发表于 2010-3-18 20:23:26 | 只看该作者
原帖由 chenall 于 2009-12-21 22:34 发表
用的是批处理配合PECMD的LINK功能。
大家可以试一下:
规则
1.有找到REG文件就先执行注册该文件。
2.有找到PECMD.INI就不进行创建快捷方式,而是直接调用PECMD.INI(用于自定义),并且不再找下一级目录。(新 ...


请问楼主:如果我想将 petools 目录 改为 mytools ,需要改哪些地方?谢谢!!
回复

使用道具 举报

63#
发表于 2010-3-19 01:50:49 | 只看该作者

回复 #62 h99h99 的帖子

你是要鱼还是要渔?

[ 本帖最后由 haiou327 于 2010-3-19 01:55 编辑 ]

PETOOLS.JPG (55.41 KB, 下载次数: 368)

PETOOLS.JPG
回复

使用道具 举报

64#
发表于 2010-3-19 06:53:08 | 只看该作者
原帖由 haiou327 于 2010-3-19 01:50 发表
你是要鱼还是要渔?

谢谢版主!!
回复

使用道具 举报

65#
发表于 2010-3-19 11:10:54 | 只看该作者
原帖由 haiou327 于 2010-3-19 01:50 发表
你是要鱼还是要渔?

版主:还想要条鱼,就是仅搜 x盘的petools ,该改哪里?
回复

使用道具 举报

66#
发表于 2010-3-19 14:08:07 | 只看该作者
会渔才行,鱼始终会吃完......

PECMD FORX @X:\MYTOOLS,TOOLS,0,EXEC !cmd /c "PETOOLS_LINK %TOOLS%"

[ 本帖最后由 haiou327 于 2010-3-19 14:41 编辑 ]

PETOOLS.JPG (107.95 KB, 下载次数: 192)

PETOOLS.JPG
回复

使用道具 举报

67#
发表于 2010-3-19 14:56:34 | 只看该作者
原帖由 haiou327 于 2010-3-19 14:08 发表
会渔才行,鱼始终会吃完......

PECMD FORX @X:\MYTOOLS,TOOLS,0,EXEC !cmd /c "PETOOLS_LINK %TOOLS%"

谢谢指点!
回复

使用道具 举报

68#
发表于 2010-3-19 18:08:45 | 只看该作者
支持一下,谢谢楼主分享!
回复

使用道具 举报

69#
发表于 2010-3-31 09:35:50 | 只看该作者
支持,試試備用,謝謝分享。
回复

使用道具 举报

70#
发表于 2010-3-31 13:01:20 | 只看该作者
突然发现如果文件名有“()”等特殊符号会有问题,特修改了一下。(红色字)
还有增加了复制desktop.ini的功能。(蓝色字)
  1. ::http://bbs.wuyou.net/forum.php?mod=viewthread&tid=158014&page=1&extra=
  2. ::chenall发表于 2009-12-21 22:34
  3. ::modified by Kend 2010-03-30 QQ:288435
  4. ::发一个重新写的petools搜索配置

  5. ::用的是批处理配合PECMD的LINK功能。
  6. ::大家可以试一下:
  7. ::规则
  8. ::1.有找到REG文件就先执行注册该文件。
  9. ::2.有找到PECMD.INI就不进行创建快捷方式,而是直接调用PECMD.INI(用于自定义),并且不再找下一级目录。(新版不支持这个)
  10. ::3.有找到SETUP.BAT,setup.inf,setup.cmd,自动执行安装
  11. ::4.搜到*.exe,*.wim,*.bat,*.cmd,并且不是SETUP.*的就创建快捷方式。
  12. ::5.单个快捷方式合并(比如\其它工具\WINHEX\目录下只有一个WINHEX程序,则会把快捷方式创建在<其它工具>目录下).

  13. ::petools扩展目录搜索安装程序 by chenall [url=http://www.chenall.comhttp://www.chenall.com[/color[/url]]
  14. ::思路来源:[url=http://bbs.wuyou.net/forum.php?mod=viewthread&tid=140951http://bbs.wuyou.net/forum.php?mod=viewthread&tid=140951[/color[/url]]
  15. ::调用方式
  16. ::PETOOLS_LNK [PETOOLS目录]
  17. ::PECMD调用例子,查找所有petools目录。
  18. ::PECMD FORX @\PETOOLS,TOOLS,0,!EXEC PETOOLS_LINK %TOOLS%
  19. ::2009-12-22 第三版,2009-12-23,修改了执行SETUP.BAT/CMD的调用方式为START /W,解决碰到EXIT退出的问题.
  20. ::2009-12-23,对于注册表文件只自动注册setup_reg.reg,其它的可以由setup.cmd来调用.以免重复执行
  21. ::具体无忧专贴:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=158014

  22. @echo off
  23. if "%~1"=="" goto :eof
  24. if not defined StartMenu goto :eof
  25. if "%~1"=="merge" goto :merge
  26. if not exist "%~1" goto :eof
  27. SET "BASE_DIR=%~1"
  28. SET "外置程序=%LNG_PETOOLS1%%~d1%LNG_PETOOLS2%"
  29. SET "外置程序=%StartMenu%\%外置程序::=%"
  30. SET "_TF=%WinDir%\T_PETOOLS_%base_dir:~0,1%_"
  31. IF EXIST "%外置程序%" RD /S /Q "%外置程序%" 2>nul

  32. :START
  33.   DEL "%_TF%*.*" 2>nul
  34.   PUSHD "%~F1"
  35.   >%_TF%LST.lst dir /s/a/b *.wim *.cmd *.bat *.exe readme*.txt 使用说明*.txt desktop.ini
  36.   POPD
  37.   PUSHD "%WinDir%"
  38.   for /f "usebackq delims=" %%i in (%_TF%LST.lst) do CALL :MAKE_LINK "%%i"
  39.   ECHO.EXEC !%~F0 merge "%外置程序%" >>%_TF%LNK.INI
  40.   ECHO.FILE %_TF%LNK.INI>>%_TF%LNK.INI
  41.   START PECMD LOAD %_TF%LNK.INI
  42.   PUSHD "%~F1"
  43.   >"%_TF%REG.lst" dir /s/a/b SETUP_REG.REG 2>nul
  44.   >"%_TF%INF.lst" dir /s/a/b setup.inf 2>nul
  45.   POPD
  46.   if exist "%_TF%REG.LST" for /f "usebackq delims=" %%i in ("%_TF%REG.LST") do REGEDIT /S "%%i"
  47.   if exist "%_TF%INF.lst" for /f "usebackq delims=" %%i in ("%_TF%INF.lst") do RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 128 %%i
  48.   if exist "%_TF%SETUP.LST" for /f "usebackq delims=" %%i in ("%_TF%SETUP.LST") do CALL :PETOOLS_SETUP %%i
  49.   DEL %_TF%*.lst
  50.   POPD
  51. goto :eof

  52. :MAKE_LINK
  53.   SETLOCAL
  54.   if "%~1"=="" goto :eof
  55.   ::如果有包含AutoRuns就跳过.
  56.   echo.%1|find /i "\AutoRuns" &&goto :eof
  57.   if /i "%~n1"=="setup" (
  58.     echo.%1 >>"%_TF%SETUP.LST"
  59.     goto :eof
  60.   )
  61.   SET ".=%~1"
  62.   SET ".=%.:&=^&%"
  63.   :: Kend 增加
  64.   SET ".=%.:^=^^%"
  65.   SET ".=%.:(=^(%"
  66.   SET ".=%.:)=^)%"
  67.   SET ".=%.:[=^[%"
  68.   SET ".=%.:]=^]%"
  69.   SET ".=%.:{=^{%"
  70.   SET ".=%.:}=^}%"
  71.   SET ".=%.:;=^;%"
  72.   SET ".=%.:'=^'%"
  73.   SET ".=%.:+=^+%"
  74.   SET ".=%.:,=^,%"
  75.   SET ".=%.:`=^`%"
  76.   :: Kend 增加
  77.   SET "PETOOLS=%~dpn1"
  78.   call,SET "PETOOLS=%%PETOOLS:%BASE_DIR%=%外置程序%%%"
  79.   SET "PETOOLS=%PETOOLS:&=^&%"
  80.   :: Kend 增加
  81.   SET "PETOOLS=%PETOOLS:^=^^%"
  82.   SET "PETOOLS=%PETOOLS:(=^(%"
  83.   SET "PETOOLS=%PETOOLS:)=^)%"
  84.   SET "PETOOLS=%PETOOLS:[=^[%"
  85.   SET "PETOOLS=%PETOOLS:]=^]%"
  86.   SET "PETOOLS=%PETOOLS:{=^{%"
  87.   SET "PETOOLS=%PETOOLS:}=^}%"
  88.   SET "PETOOLS=%PETOOLS:;=^;%"
  89.   SET "PETOOLS=%PETOOLS:'=^'%"
  90.   SET "PETOOLS=%PETOOLS:+=^+%"
  91.   SET "PETOOLS=%PETOOLS:,=^,%"
  92.   SET "PETOOLS=%PETOOLS:`=^`%"
  93.   :: Kend 增加
  94.   if /i "%~nx1" == "desktop.ini" (
  95.     echo.FILE %.%=^>%PETOOLS%.ini>>%_TF%LNK.INI
  96.     echo.SITE %PETOOLS%.ini,+H+S>>%_TF%LNK.INI
  97.   ) else (
  98.     echo.LINK %PETOOLS%,%.%>>%_TF%LNK.INI
  99.   )
  100. GOTO :EOF

  101. :PETOOLS_SETUP
  102.   ::为什么需要这些步骤呢,因为考虑到有一些批处理对执行目录的要求(编写时没有考虑到),所以才需要进入批处理目录执行.否则可能会出错.表面上是执行了,其实执行的结果是错误的.用PECMD调用同样会有这样的问题.
  103.   PUSHD "%~dp1"
  104.   PECMD EXEC !%~nx1
  105.   POPD
  106. goto :eof

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

  112. :merge_lnk
  113.   CD /D %1||GOTO :EOF
  114.   for /d %%i in ("%~f1\*") do call %0 "%%i"
  115.   CD /D %1||GOTO :EOF
  116.   set n=
  117.   for /f %%i in ('dir /a/b') do (
  118.     if defined n goto :eof
  119.     set n=1
  120.   )
  121.   for /f "usebackq delims=" %%i in (`dir /a/b`) do move /y "%%i" ..\
  122.   cd ..&&rd %1
  123. goto :eof
复制代码
回复

使用道具 举报

71#
发表于 2010-3-31 13:40:46 | 只看该作者
最新修改:
支持desktop.ini文件,前一版本只复制,无法按desktop.ini显示。问题是desktop.ini所在目录没有设为只读。
--------------------------------------------------------------------------------------
::http://bbs.wuyou.net/forum.php?mod=viewthread&tid=158014&page=1&extra=
::chenall发表于 2009-12-21 22:34
::modified by Kend 2010-03-30 QQ:288435
::发一个重新写的petools搜索配置

::用的是批处理配合PECMD的LINK功能。
::大家可以试一下:
::规则
::1.有找到REG文件就先执行注册该文件。
::2.有找到PECMD.INI就不进行创建快捷方式,而是直接调用PECMD.INI(用于自定义),并且不再找下一级目录。(新版不支持这个)
::3.有找到SETUP.BAT,setup.inf,setup.cmd,自动执行安装
::4.搜到*.exe,*.wim,*.bat,*.cmd,并且不是SETUP.*的就创建快捷方式。
::5.单个快捷方式合并(比如\其它工具\WINHEX\目录下只有一个WINHEX程序,则会把快捷方式创建在<其它工具>目录下).

::petools扩展目录搜索安装程序 by chenall [url=http://www.chenall.comhttp://www.chenall.com[/color[/url]]
::思路来源:[url=http://bbs.wuyou.net/forum.php?mod=viewthread&tid=140951http://bbs.wuyou.net/forum.php?mod=viewthread&tid=140951[/color[/url]]
::调用方式
::PETOOLS_LNK [PETOOLS目录]
::PECMD调用例子,查找所有petools目录。
::PECMD FORX @\PETOOLS,TOOLS,0,!EXEC PETOOLS_LINK %TOOLS%
::2009-12-22 第三版,2009-12-23,修改了执行SETUP.BAT/CMD的调用方式为START /W,解决碰到EXIT退出的问题.
::2009-12-23,对于注册表文件只自动注册setup_reg.reg,其它的可以由setup.cmd来调用.以免重复执行
::具体无忧专贴:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=158014

@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 "外置程序=%LNG_PETOOLS1%%~d1%LNG_PETOOLS2%"
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 desktop.ini
  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%REG.lst" dir /s/a/b SETUP_REG.REG 2>nul
  >"%_TF%INF.lst" dir /s/a/b setup.inf 2>nul
  POPD
  if exist "%_TF%REG.LST" for /f "usebackq delims=" %%i in ("%_TF%REG.LST") do REGEDIT /S "%%i"
  if exist "%_TF%INF.lst" for /f "usebackq delims=" %%i in ("%_TF%INF.lst") do RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 128 %%i
  if exist "%_TF%SETUP.LST" for /f "usebackq delims=" %%i in ("%_TF%SETUP.LST") do CALL :PETOOLS_SETUP %%i
  DEL %_TF%*.lst
  POPD
goto :eof

:MAKE_LINK
  SETLOCAL
  if "%~1"=="" goto :eof
  ::如果有包含AutoRuns就跳过.
  echo.%1|find /i "\AutoRuns\" &&goto :eof
  if /i "%~n1"=="setup" (
    echo.%1 >>"%_TF%SETUP.LST"
    goto :eof
  )
  SET ".=%~1"
  SET ".=%.:&=^&%"
  :: Kend 增加
  SET ".=%.:^=^^%"
  SET ".=%.:(=^(%"
  SET ".=%.:)=^)%"
  SET ".=%.:[=^[%"
  SET ".=%.:]=^]%"
  SET ".=%.:{=^{%"
  SET ".=%.:}=^}%"
  SET ".=%.:;=^;%"
  SET ".=%.:'=^'%"
  SET ".=%.:+=^+%"
  SET ".=%.:,=^,%"
  SET ".=%.:`=^`%"
  :: Kend 增加

  SET "PETOOLS=%~dpn1"
  call,SET "PETOOLS=%%PETOOLS:%BASE_DIR%=%外置程序%%%"
  SET "PETOOLS=%PETOOLS:&=^&%"
  :: Kend 增加
  SET "PETOOLS=%PETOOLS:^=^^%"
  SET "PETOOLS=%PETOOLS:(=^(%"
  SET "PETOOLS=%PETOOLS:)=^)%"
  SET "PETOOLS=%PETOOLS:[=^[%"
  SET "PETOOLS=%PETOOLS:]=^]%"
  SET "PETOOLS=%PETOOLS:{=^{%"
  SET "PETOOLS=%PETOOLS:}=^}%"
  SET "PETOOLS=%PETOOLS:;=^;%"
  SET "PETOOLS=%PETOOLS:'=^'%"
  SET "PETOOLS=%PETOOLS:+=^+%"
  SET "PETOOLS=%PETOOLS:,=^,%"
  SET "PETOOLS=%PETOOLS:`=^`%"
  :: Kend 增加

  if /i "%~nx1" == "desktop.ini" (
    echo.FILE %.%=^>%PETOOLS%.ini>>%_TF%LNK.INI
    echo.SITE %PETOOLS%.ini,+R+H+S>>%_TF%LNK.INI
  ) else (
    echo.LINK %PETOOLS%,%.%>>%_TF%LNK.INI
  )

GOTO :EOF

:PETOOLS_SETUP
  ::为什么需要这些步骤呢,因为考虑到有一些批处理对执行目录的要求(编写时没有考虑到),所以才需要进入批处理目录执行.否则可能会出错.表面上是执行了,其实执行的结果是错误的.用PECMD调用同样会有这样的问题.
  PUSHD "%~dp1"
  PECMD EXEC !%~nx1
  POPD
goto :eof

:merge
  PUSHD %2||GOTO :EOF
  for /d %%i in ("%~2\*") do (
    call :merge_lnk "%%i"
    attrib +r "%%i" 2>nul
  )

  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
--------------------------------------------------------------------------------------
回复

使用道具 举报

72#
发表于 2010-3-31 13:46:46 | 只看该作者
的确很方便 实用啊!
回复

使用道具 举报

73#
发表于 2010-4-6 10:42:14 | 只看该作者
要試試看,是否比以往的好。
回复

使用道具 举报

74#
发表于 2010-4-6 14:05:08 | 只看该作者
試了,有些問題如下:

1、一開始,便執行有setup檔的PETOOLS目錄,但該目錄沒有出現在PETOOLS目錄,
   想請教若PETOOLS目錄內,有不同的setup檔,它怎樣執行呢?
2、PETOOLS目錄內,不是所有的目錄都能找到,如上1、的例子,目錄是沒有出現,
   但奇怪它會執行了setup檔呢?

請高手指教。
回复

使用道具 举报

75#
发表于 2010-4-6 15:18:53 | 只看该作者

回复 #74 wama 的帖子

如果子目录只含一个单独程序,只把该快捷方式建立到上一层。如下例IWNHEX快捷方式只出现在其它工具里,WINHEX目录不出现
  1. 单个快捷方式合并(比如\其它工具\WINHEX\目录下只有一个WINHEX程序,则会把快捷方式创建在<其它工具>目录下).
复制代码
SETUP_REG.REG  将静默导入
setup.inf文件  RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 128 setup.inf

[ 本帖最后由 haiou327 于 2010-4-7 14:05 编辑 ]
回复

使用道具 举报

76#
发表于 2010-4-7 11:05:53 | 只看该作者
回复 #75 haiou327 的帖子

我看並不是這樣,如1、問題,含setup的子目錄內,不只有一个setup程序的,但整個目錄不見出現在PETOOLS目錄內,但在進入PE後即會啟動該程序,我將以下此句抽出,便沒有啟動了。
"if exist "%_TF%SETUP.LST" for /f "usebackq delims=" %%i in ("%_TF%SETUP.LST") do
CALL :PETOOLS_SETUP %%i"
我是用#71樓的最新修改的。
另我試了樓主的第三版,當進入PE前,便出現藍畫面死機了,試多次也一樣。
回复

使用道具 举报

77#
发表于 2010-4-7 12:59:10 | 只看该作者
"if exist "%_TF%SETUP.LST" for /f "usebackq delims=" %%i in ("%_TF%SETUP.LST") do
CALL :PETOOLS_SETUP %%i"
调用
PECMD EXEC !%~nx1
去掉这句就不会在加载PETOOL_link时直接执行EXEC !%~nx1,SETUP.wim SETUP.cmd SETUP.bat SETUP.exe只会创建*.wim *.cmd *.bat *.exe readme*.txt 使用说明*.txt快捷方式到%外置程序_%~d1盘目录,加载PETOOL蓝屏死机,说说加载的方法,如果方法正确的话,可以试试只在PETOOL里存放最少文件保留一个EXE文件看能否成功,兰屏死机看看PETooL里是否有setup_reg.reg,setup.inf,*.wim *.cmd *.bat *.exe档为SETUP,有可能是在运行这些文件时出的问题,先试试揪出这些文件来看是否成功。
PETOOL_Link是经多人测试,如果存在加载蓝屏死机早就开锅了

你也可以在加载不成功的话屏掉这两句再加载




这里是我用Chenall的PETOOL_link的一个效果截图,没有出现过你所说过问题


[ 本帖最后由 haiou327 于 2010-4-7 14:45 编辑 ]
回复

使用道具 举报

78#
发表于 2010-4-7 14:06:42 | 只看该作者
謝謝haiou327 大的指點
我是用樓主的第三版加載的,與用#71 kendling 的最新修改版同樣加載,但第三版藍屏死機,
而修改版可正常啟動,只出現#74樓的情況吧!
可否發個Chenall的PETOOL_link及安裝說明給我學習、學習。
回复

使用道具 举报

79#
发表于 2010-4-7 14:33:34 | 只看该作者
如果在PECMD.ini加载
在LINK段增加
FORX @\PETOOLS,TOOLS,0,!EXEC PETOOLS_LINK.CMD %TOOLS%

也可以调用CMD方式加载,内容如下
PECMD FORX @\PETOOLS,TOOLS,0,!EXEC PETOOLS_LINK.CMD %TOOLS%
在PECMD配制文件里创建cmd文件的快捷方式到指定开始菜单里

例程可以下载有加载PETOOL_LINK的PE解开PECMD.ini查看
这里有一个#463楼下载附件参考里面的PEcmd.INI,用的是CHENall第三版

  http://bbs.wuyou.net/forum.php?mod=viewthread&tid=160583&page=47#pid1910474
回复

使用道具 举报

80#
发表于 2010-4-8 18:42:13 | 只看该作者
感谢haiou327 大的指引,你推荐的#463楼的附件已下载测试,我依照那方法及用你的调用CMD方式加载,或附件内的方式加载都不成功,不是沒有反应,便是蓝屏死机,看来不大好用。
到现在为止,还是感觉 PETOOLS.INI 易用及稳定,唯一缺点是所有PETOOLS目录下的文件,都全部显现出来,可有高手能编辑一下PETOOLS.INI内容,使能只显示 *.wim *.cmd *.bat *.exe
*.txt 等文件,这真是太好了。

再次感谢haiou327 大的帮忙与热心! PETOOLS.zip (589 Bytes, 下载次数: 172)
回复

使用道具 举报

81#
发表于 2010-4-8 19:58:33 | 只看该作者
支持 又学习了一样东西 O(∩_∩)O~
回复

使用道具 举报

82#
发表于 2010-4-14 15:26:59 | 只看该作者
使用第三版

搜索前:

PETOOLS
    ┃
    ┣━PXE服务器
    ┃
    ┣━镜像工具
    ┃
    ┣━硬件检测
    ┃
    ┣━备用驱动
    ┃   
    ┃     DriversVM显声网驱动.CAB
    ┃     别说缺驱动.txt
    ┃     万能显卡驱动.7z
    ┃     万能显卡驱动.CMD
    ┃
    ┣━网络工具
    ┃


搜索后:

外置程序_H盘
    ┃
    ┣━PXE服务器
    ┃
    ┣━镜像工具
    ┃
    ┣━硬件检测
    ┃
    ┣━万能显卡驱动.CMD
    ┃
    ┣━网络工具
    ┃   

搜索后,【备用驱动】文件夹没了,里面的万能显卡驱动.CMD提到外置程序_H盘下面
回复

使用道具 举报

83#
发表于 2010-4-14 17:40:33 | 只看该作者
又一个精品。谢谢楼主,太谢谢了,
回复

使用道具 举报

84#
发表于 2010-12-19 11:07:48 | 只看该作者
收藏学习了,真是好文章
回复

使用道具 举报

85#
发表于 2011-6-2 16:51:25 | 只看该作者
請問,Noname XPE 是否能以此應用,搜索其Outtools的外置程序,為將其完全藏入UD中?
可否詳細說明一下如何配置...
回复

使用道具 举报

86#
发表于 2011-8-2 15:01:32 | 只看该作者
请教为什么我将别人做好的petools.ini搬过来时无法完全显示列表,只显示1盘PETOOLS-Target,后面就没在显示了。
如果点这个target,倒是跳到对应的目录。
回复

使用道具 举报

87#
发表于 2011-12-4 16:34:01 | 只看该作者
那请问考虑到这种情况没:某软件用。REG文件(或INF)记录注册数据,然后有没有别的REG文件,然后你用REG注册,就会报错,影响执行效率,起码一个错误在那影响雅观吧?因此建议增加检查REG有效性,就是读REG文件开头是否有Windows Registry Editor Version 5.00或REGEDIT4这一行(INF文件读开头是否有[Verison]这一行),没有就跳过
回复

使用道具 举报

88#
发表于 2012-2-21 20:01:04 | 只看该作者
原帖由 chenall 于 2009-12-22 20:10 发表
OK,解决了,顺便处理一下快捷方式合并.如果没有问题就这样子了.

可不可以把readme.txt之流加上?
回复

使用道具 举报

89#
发表于 2012-3-3 03:11:05 | 只看该作者
原帖由 hhh333 于 2009-12-22 13:53 发表
chenall真是编程高手,以前总想去递规调用,而兄弟就是一个dir /s就搞定了,很巧,逻辑也很清晰。怪不得现在不点将g4d也交到你手上了。

有个建议,由于有的PE会将TEMP改变到硬盘或其他盘上,在这上面读写效率 ...


PECMD-32.2012.1除夕版.多窗口多线-U65F裸机系统+18M酷MiniPE
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=205402&extra=page%3D1

直接在内存中生成,不需要中间临时文件。
PETOOLS_LINK.WCS:
#!PECMD
// VER >= PECMD2012.1.U65F
SET &&EnviMode=1  //避免意外错误,空变量,外部变量,
SET FORCELOCAL=1  //可以处理大变量. 不影响外部变量
///////LOGS *D:\xx.log //调试记录

CALL PETOOLS_LINK %*
//主函数: PETOOLS_LINK
//参数: 搜索处理的目录
//     可以是相对目录, .. . 构成的目录
_SUB PETOOLS_LINK
    FIND  $=%StartMenu%, EXIT _SUB
    FIND  $=%~1, EXIT _SUB
    SET &SETUP=   //初始化空表
    TEAM SET &SETUP=| SET &LST=| SET &REG=|  SET &INF=| SET &BLEN=0|  SET &BASE_DIR=
    SET$ &NL=0d 0a //换行
   
   
    FDIR --full BASE_DIR=%1\    //换成绝对,干净的路径
   
    STRL BLEN=%BASE_DIR%
    CALC BLEN=%BLEN% + 2  // 1:\  1:下一位置
    LSTR DRV=1,%BASE_DIR%  //D
    SET 外置程序=%StartMenu%\外置程序_%DRV%盘
   
    FILE  %外置程序%
   
    EXEC* --wd:"%~1" LST=!cmd /c dir /s/a/b *.wim *.cmd *.bat *.exe *.wcs *.wcz  readme*.txt 使用说明*.txt
    TEAM SET I=1| READ -,-1,NUM,%LST%
    LOOP #%I%<=%NUM%,
    {
        READ -,%I%,LINE,%LST%
        CALC  I=%I% + 1
        CALL  MAKE_LINK "%LINE%"  //带有目录
    }

    CALL  merge "%外置程序%"
    EXEC* --wd:"%~1" REG=!cmd /c dir /s/a/b SETUP_REG.REG 2>nul
    TEAM SET I=1| READ -,-1,NUM,%REG%
    LOOP #%I%<=%NUM%,
    {
        READ -,%I%,LINE,%REG%
        CALC  I=%I% + 1
        EXEC =REGEDIT /S %LINE%   //带有目录
    }
    EXEC* --wd:"%~1" INF=!cmd /c dir /s/a/b setup.inf 2>nul
    TEAM SET I=1| READ -,-1,NUM,%INF%
    LOOP #%I%<=%NUM%,
    {
        TEAM READ -,%I%,LINE,%INF%| CALC  I=%I% + 1
        EXEC =RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 128 %LINE%  //带有目录
        //DEVI %LINE%  //直接用DEVI
    }
   
    TEAM SET I=1| READ -,-1,NUM,%SETUP%
    LOOP #%I%<=%NUM%,
    {
        TEAM READ -,%I%,LINE,%SETUP%| CALC  I=%I% + 1
        EXEC --wd:*"%LINE%"   !%LINE%
    }
_END//END_OF_PETOOLS_LINK


_SUB MAKE_LINK
    FIND $=%~1, EXIT _SUB
    TEAM SET &&MN=|  SET &&PT=
    NAME MN=%~1
    FIND $=%MN%, EXIT _SUB
    FIND $setup=%MN%,
    {
        SET SETUP=%SETUP%%NL%%1  //加入SETUP表
        EXIT _SUB
    }
    FDIR DIR1=%~1
    MSTR PT=%BLEN%,-1,%DIR1%  //砍掉起始目录BASE_DIR\
    ECHO MN=[%PT%] [%PT%\%MN%]
    LINK %外置程序%\%PT%\%MN%,%~1
_END // END_OF_MAKE_LINK

//:PETOOLS_SETUP //这个版本PECMD 可以 --wd:dir 解决

// merge: 对每个子目录, CALL  merge_lnk
_SUB merge
    SET &I=   //
    FORX  @%~1\*.*,I, CALL  merge_lnk  "%I%"
_END // END_OF_merge



// merge_lnk: 一个或空目录,合并到上级目录
_SUB merge_lnk
    TEAM SET &I=   //
    FORX @%~1\*.*,I, CALL  merge_lnk  "%I%"  //递归调用,深度优先。
    TEAM SET &MN=| SET &n=0| SET &MSG=| SET &NUM=| SET &FILE=| SET &DIR=%~1| SET &LINE=
    FORX %~1\*.*,I,
    {
        NAME MN=%I%   
        IFEX ..\%MN%, SET n=9| CALC n=%n% + 1   //上级有重名则不移动
    }
    FIND $%n%>1,! // EXIT _SUB   //多个文件
    {
        EXEC* MSG=!cmd.exe  /C  dir /a/b %~1\*.*    //没有目录名;
        READ -,-1,NUM,%MSG%
        LOOP #%I%<=%NUM%,
        {
            TEAM READ -,%I%,LINE,%MSG%| CALC  I=%I% + 1
            IFEX %DIR%\%LINE%,! FILE  %FILE%->%DIR%\..   //移动到上级
        }
        EXEC* MSG=!cmd.exe  /C  dir /a/b %~1\*.*   //没有目录名;
        READ -,-1,NUM,%MSG%
        IFEX $%NUM%<1, FILE %~1 //删除空目录
    }
_END  //END_OF_merge_lnk

_ENDFILE  //_ENDFILE 后面部分根本不调入内存,就像不存在
EXIT FILE

//<2>PETOOLS.WCS: DSystem mdyblog.blog.163.com
//调用方式
//PETOOLS_LNK [PETOOLS目录]
//PECMD调用例子,查找所有petools目录。
//FORX @\PETOOLS,TOOLS,0,PECMD LOAD PETOOLS_LINK.WCS  "%TOOLS%” //外部脚本
//FORX @\PETOOLS,TOOLS,0,CALL PETOOLS_LINK  "%TOOLS%"            //嵌入函数 ,直接调函数

//<1>PETOOLS.CMD: chenall
::petools扩展目录搜索安装程序 by chenall [url=http://www.chenall.comhttp://www.chenall.com[/color[/url]]
::思路来源:[url=http://bbs.wuyou.net/forum.php?mod=viewthread&tid=140951http://bbs.wuyou.net/forum.php?mod=viewthread&tid=140951[/color[/url]]
::调用方式
::PETOOLS_LNK [PETOOLS目录]
::PECMD调用例子,查找所有petools目录。
::PECMD FORX @\PETOOLS,TOOLS,0,!EXEC CMD /C “PETOOLS_LINK %TOOLS%”
::2009-12-22 第三版,2009-12-23,修改了执行SETUP.BAT/CMD的调用方式为START /W,解决碰到EXIT退出的问题.
::2009-12-23,对于注册表文件只自动注册setup_reg.reg,其它的可以由setup.cmd来调用.以免重复执行
::具体无忧专贴:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=158014





回复

使用道具 举报

90#
发表于 2012-3-3 10:51:57 | 只看该作者
原帖由 2012abc19701 于 2012-3-3 03:11 发表


PECMD-32.2012.1除夕版.多窗口多线-U65F裸机系统+18M酷MiniPE
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=205402&extra=page%3D1

直接在内存中生成,不需要中间临时文件。
PETOOLS_LINK.WCS:
#!PECMD ...

简化了一下:


PECMD-32.2012.1除夕版.多窗口多线-U65F裸机系统+18M酷MiniPE
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=205402&extra=page%3D1

直接在内存中生成,不需要中间临时文件。
PETOOLS_LINK.WCS:


#!PECMD
// VER >= PECMD2012.1.U65F
SET &&EnviMode=1  //避免意外错误,空变量,外部变量,
SET FORCELOCAL=1  //可以处理大变量. 不影响外部变量
///////LOGS *D:\xx.log //调试记录

CALL PETOOLS_LINK %*

//主函数: PETOOLS_LINK
//参数: 搜索处理的目录
//     可以是相对目录, .. . 构成的目录
_SUB PETOOLS_LINK
    FIND  $=%StartMenu%, EXIT _SUB
    FIND  $=%~1, EXIT _SUB
    SET &SETUP=   //初始化空表
    TEAM SET &SETUP=| SET &LST=| SET ®=|  SET &INF=| SET &BLEN=0|  SET &BASE_DIR=
    SET$ &NL=0a  //换行
   
   
    FDIR --full BASE_DIR=%1\    //换成绝对,干净的路径
   
    STRL BLEN=%BASE_DIR%
    CALC BLEN=%BLEN% + 2  // 1:\  1:下一位置
    LSTR DRV=1,%BASE_DIR%  //D
    SET 外置程序=%StartMenu%\外置程序_%DRV%盘
   
    FILE  %外置程序%
   
    EXEC* --wd:"%~1" LST=!cmd /c dir /s/a/b *.wim *.cmd *.bat *.exe *.wcs *.wcz  readme*.txt 使用说明*.txt
    FORX *NL LST,LINE, CALL  MAKE_LINK "%LINE%"  //带有目录

    CALL  merge "%外置程序%"

    EXEC* --wd:"%~1" REG=!cmd /c dir /s/a/b SETUP_REG.REG 2>nul
    FORX *NL REG,LINE, EXEC REGEDIT /S %LINE%   //带有目录
    EXEC* --wd:"%~1" INF=!cmd /c dir /s/a/b setup.inf 2>nul
    FORX *NL INF,LINE, EXEC =RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 128 %LINE%  //带有目录
        //DEVI %LINE%  //直接用DEVI
   
    FORX *NL SETUP,LINE, EXEC --wd:*"%LINE%"   !%LINE%
_END//END_OF_PETOOLS_LINK


_SUB MAKE_LINK
    FIND $=%~1, EXIT _SUB
    TEAM SET &&MN=|  SET &&PT=
    NAME MN=%~1
    FIND $=%MN%, EXIT _SUB
    FIND $setup=%MN%, TEAM  SET SETUP=%SETUP%%NL%%1 | EXIT _SUB //加入SETUP表
    FDIR DIR1=%~1
    MSTR PT=%BLEN%,-1,%DIR1%  //砍掉起始目录BASE_DIR\
    ECHO MN=[%PT%] [%PT%\%MN%]
    LINK %外置程序%\%PT%\%MN%,%~1
_END // END_OF_MAKE_LINK

//:PETOOLS_SETUP //这个版本PECMD 可以 --wd:dir 解决


// merge: 对每个子目录, CALL  merge_lnk
_SUB merge
    SET &I=   //
    FORX  @%~1\*.*,I, CALL  merge_lnk  "%I%"
_END // END_OF_merge




// merge_lnk: 一个或空目录,合并到上级目录
_SUB merge_lnk
    TEAM SET &I=   //
    FORX @%~1\*.*,I, CALL  merge_lnk  "%I%"  //递归调用,深度优先。
    TEAM SET &MN=| SET &n=0| SET &MSG=| SET &NUM=| SET &FILE=| SET &DIR=%~1| SET &LINE=
    FORX %~1\*.*,I,
    {
        NAME MN=%I%   
        IFEX ..\%MN%, SET n=9| CALC n=%n% + 1   //上级有重名则不移动
    }
    FIND $%n%>1,! // !多个文件
    {
        EXEC* MSG=!cmd.exe  /C  dir /a/b %~1\*.*    //没有目录名;
        READ -,-1,NUM,%MSG%
        LOOP #%I%<=%NUM%,
        {
            TEAM READ -,%I%,LINE,%MSG%| CALC  I=%I% + 1
            IFEX %DIR%\%LINE%,! FILE  %FILE%->%DIR%\..   //移动到上级
        }
        EXEC* MSG=!cmd.exe  /C  dir /a/b %~1\*.*   //没有目录名;
        READ -,-1,NUM,%MSG%
        IFEX $%NUM%<1, FILE %~1 //删除空目录
    }
_END  //END_OF_merge_lnk

_ENDFILE  //_ENDFILE 后面部分根本不调入内存,就像不存在
EXIT FILE

//<2>PETOOLS.WCS: DSystem mdyblog.blog.163.com
//调用方式
//PETOOLS_LNK [PETOOLS目录]
//PECMD调用例子,查找所有petools目录。
//FORX @\PETOOLS,TOOLS,0,PECMD LOAD PETOOLS_LINK.WCS  "%TOOLS%” //外部脚本
//FORX @\PETOOLS,TOOLS,0,CALL PETOOLS_LINK  "%TOOLS%"            //嵌入函数 ,直接调函数

//<1>PETOOLS.CMD: chenall
::petools扩展目录搜索安装程序 by chenall [url=http://www.chenall.comhttp://www.chenall.com[/color[/url]]
::思路来源:[url=http://bbs.wuyou.net/viewthread.php?tid=140951http://bbs.wuyou.net/viewthread.php?tid=140951[/color[/url]]
::调用方式
::PETOOLS_LNK [PETOOLS目录]
::PECMD调用例子,查找所有petools目录。
::PECMD FORX @\PETOOLS,TOOLS,0,!EXEC CMD /C “PETOOLS_LINK %TOOLS%”
::2009-12-22 第三版,2009-12-23,修改了执行SETUP.BAT/CMD的调用方式为START /W,解决碰到EXIT退出的问题.
::2009-12-23,对于注册表文件只自动注册setup_reg.reg,其它的可以由setup.cmd来调用.以免重复执行
::具体无忧专贴:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=158014



[ 本帖最后由 2012abc19701 于 2012-5-5 08:41 编辑 ]
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-26 09:24

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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