无忧启动论坛

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

在PE中快速的查找安装驱动程序

    [复制链接]
31#
 楼主| 发表于 2016-11-21 15:16:42 | 只看该作者
本帖最后由 sp_star 于 2016-11-21 15:20 编辑
红毛樱木 发表于 2016-11-21 14:31
你开始说的我明白意思。
现实使用中,可能需要使用两次匹配或者更多。


改这个函数就行了
  1. int CompareHwId(char *short_id, char *long_id)
  2. {
  3.         int i=0;
  4.         char *p=short_id;
  5.         if( *p==' ' ) p++; //跳过前面的空格

  6.         while( p[i]!=0)
  7.         {
  8.                 if( p[i]!=long_id[i] )
  9.                 {
  10.                         return 0;
  11.                 }
  12.                 i++;
  13.         }
  14.         return 1;
  15. }
复制代码


只有一个地方使用,info->hwid是从TXT文件读取出的ID, hwid是实际的硬件ID.
match = CompareHwId(info->hwid, hwid);

点评

又研究了一番,发现有的设备需要用devcon获取的硬件ID中的第二行去匹配,所以这个匹配逻辑还得改。。。如果用短ID匹配,安装显卡和网卡驱动是没有问题的。声卡驱动可能就要另外的单独做短ID来匹配了,可能需要3段的  详情 回复 发表于 2016-11-21 22:51
好的,谢谢。不会,我找同事看看。  详情 回复 发表于 2016-11-21 15:35
回复

使用道具 举报

32#
发表于 2016-11-21 15:35:11 | 只看该作者
sp_star 发表于 2016-11-21 15:16
改这个函数就行了

好的,谢谢。不会,我找同事看看。
回复

使用道具 举报

33#
发表于 2016-11-21 22:51:20 | 只看该作者
sp_star 发表于 2016-11-21 15:16
改这个函数就行了


又研究了一番,发现有的设备需要用devcon获取的硬件ID中的第二行去匹配,所以这个匹配逻辑还得改。。。如果用短ID匹配,安装显卡和网卡驱动是没有问题的。声卡驱动可能就要另外的单独做短ID来匹配了,可能需要3段的短ID。

过段时间再研究吧。。。要和同事一起做驱动包,预预热哈哈

点评

发现有的设备需要用devcon获取的硬件ID中的第二行去匹配 ==>什么设备啊?贴上来看看? 声卡有什么特殊的吗?  详情 回复 发表于 2016-11-21 23:01
回复

使用道具 举报

34#
 楼主| 发表于 2016-11-21 23:01:10 | 只看该作者
红毛樱木 发表于 2016-11-21 22:51
又研究了一番,发现有的设备需要用devcon获取的硬件ID中的第二行去匹配,所以这个匹配逻辑还得改。。。 ...

发现有的设备需要用devcon获取的硬件ID中的第二行去匹配
==>什么设备啊?贴上来看看?

声卡有什么特殊的吗?
回复

使用道具 举报

35#
发表于 2016-11-21 23:30:09 | 只看该作者
本帖最后由 红毛樱木 于 2016-11-21 23:53 编辑
sp_star 发表于 2016-11-21 23:01
发现有的设备需要用devcon获取的硬件ID中的第二行去匹配
==>什么设备啊?贴上来看看?




我这片声卡就需要用第二行的ID来匹配了(应该还有更多的情况,只是没有发现)

HDAUDIO\FUNC_01&VEN_10EC&DEV_0887&SUBSYS_104386C7

下面的是INF文件
oem19.7z (28 KB, 下载次数: 2)


声卡如果按照&分段的话,可能需要三段才能匹配厂家的真实ID

点评

devcon读取HWID是HDAUDIO\FUNC_01&VEN_10EC&DEV_0887&SUBSYS_104386C7&REV..... inf中的HWID是HDAUDIO\FUNC_01&VEN_10EC&DEV_0887&SUBSYS_104386C7 按之前的逻辑,是可以匹配上的。 我用devcon读取的,字符串更  详情 回复 发表于 2016-11-22 10:41
回复

使用道具 举报

36#
 楼主| 发表于 2016-11-22 10:41:19 | 只看该作者
红毛樱木 发表于 2016-11-21 23:30
我这片声卡就需要用第二行的ID来匹配了(应该还有更多的情况,只是没有发现)

HDAUDIO\FUNC_01&VE ...

devcon读取HWID是HDAUDIO\FUNC_01&VEN_10EC&DEV_0887&SUBSYS_104386C7&REV.....
inf中的HWID是HDAUDIO\FUNC_01&VEN_10EC&DEV_0887&SUBSYS_104386C7
按之前的逻辑,是可以匹配上的。

我用devcon读取的,字符串更长。
HDAUDIO\FUNC_01&VEN_10EC&DEV_0887&SUBSYS_1458A002&REV_1003\4&1F81EEAB&0&0201
    Name: Realtek High Definition Audio
    Driver is running.

如果你要分段的话,最重要的是VEN_10EC&DEV_0887,不管几段,一定要包括的。后面的SUBSYS不知道是不是必须的。

点评

恩,ven..den...这段是关键。 另外一个方法,不知道妥不妥当。 从硬件ID第一行开始匹配,匹配不到的就跳到第二行匹配,直到匹配为止,如果还没有就跳到兼容ID匹配,以此类推。 不知道这种逻辑是不是稳妥些  详情 回复 发表于 2016-11-22 15:21
回复

使用道具 举报

37#
发表于 2016-11-22 15:21:34 | 只看该作者
sp_star 发表于 2016-11-22 10:41
devcon读取HWID是HDAUDIO\FUNC_01&VEN_10EC&DEV_0887&SUBSYS_104386C7&REV.....
inf中的HWID是HDAUDIO\F ...

恩,ven..den...这段是关键。
另外一个方法,不知道妥不妥当。
从硬件ID第一行开始匹配,匹配不到的就跳到第二行匹配,直到匹配为止,如果还没有就跳到兼容ID匹配,以此类推。
不知道这种逻辑是不是稳妥些

点评

多匹配几次应该也没问题,就算匹配错误,安装驱动时也会检查。 搜索次数多,就会慢一些。  详情 回复 发表于 2016-11-22 17:20
回复

使用道具 举报

38#
 楼主| 发表于 2016-11-22 17:20:34 | 只看该作者
红毛樱木 发表于 2016-11-22 15:21
恩,ven..den...这段是关键。
另外一个方法,不知道妥不妥当。
从硬件ID第一行开始匹配,匹配不到的就 ...

多匹配几次应该也没问题,就算匹配错误,安装驱动时也会检查。
搜索次数多,就会慢一些。

点评

恩确实是的,只是这样用PECMD弄出来的代码,可能效率就低很多了。  详情 回复 发表于 2016-11-22 17:27
回复

使用道具 举报

39#
发表于 2016-11-22 17:27:17 | 只看该作者
sp_star 发表于 2016-11-22 17:20
多匹配几次应该也没问题,就算匹配错误,安装驱动时也会检查。
搜索次数多,就会慢一些。

恩确实是的,只是这样用PECMD弄出来的代码,可能效率就低很多了。

点评

比如之前要搜索10个ID,现在要搜索50个,搜索的时间就长了5倍,这和PECMD没关系。 驱动种类很多,要找一个覆盖所有情况的比较难,我觉得大多数OK就行了,要尽量快。  详情 回复 发表于 2016-11-22 17:52
回复

使用道具 举报

40#
 楼主| 发表于 2016-11-22 17:52:56 | 只看该作者
红毛樱木 发表于 2016-11-22 17:27
恩确实是的,只是这样用PECMD弄出来的代码,可能效率就低很多了。

比如之前要搜索10个ID,现在要搜索50个,搜索的时间就长了5倍,这和PECMD没关系。
驱动种类很多,要找一个覆盖所有情况的比较难,我觉得大多数OK就行了,要尽量快。
回复

使用道具 举报

41#
发表于 2016-11-24 08:39:20 | 只看该作者
谢谢分享!
回复

使用道具 举报

42#
发表于 2017-1-3 21:20:25 | 只看该作者
本帖最后由 红毛樱木 于 2017-1-3 21:22 编辑
  1. LOGS * %Curdir%\DRV.LOG
  2. TEAM ENVI^ ENVIMODE=1| ENVI^ FORCELOCAL=1

  3. SET$ NL=0d 0a
  4. SET$ NL1=0a
  5. SET$ SP=0d 0a 20 20 20 20
  6. SET& TAB=09
  7. ENVI &INST_HWIDs=

  8. //如果是EXE文件,使用内置工具
  9. TEAM ENVI run_fdrv=|ENVI run_7z=|ENVI run_devcon=
  10. FEXT ext=%~0
  11. ENVI parm=%~1
  12. FIND $%ext%=EXE,
  13. {
  14.     ENVI run_fdrv=-exe:*cab:#100:fdrv.exe
  15.     ENVI run_7z=-exe:*cab:#101:7z.exe
  16.     ENVI run_devcon=-exe:*cab:#102:devcon.exe
  17. }

  18. FIND |%&bX64%=0,ENVI ARCH=X86!ENVI ARCH=X64
  19. FIND $%ARCH%=X64, ENVI DRV_DIR=%CurDir%\NT6x64! ENVI DRV_DIR=%CurDir%\NT6x86

  20. GetNotDrivedHWID &DEVICE_LIST %parm%
  21. //TEAM MESS %&DEVICE_LIST% | EXIT
  22. InstallDevicesDriver

  23. EXIT

  24. //参数%~1=返回的HWID列表   %~2=前缀,可选
  25. _SUB GetNotDrivedHWID
  26.     ENVI &&find_str=%~2
  27.     FIND $%&find_str%=,ENVI &&find_str=*
  28.     EXEC* %run_devcon% &&VV=!devcon.exe status %&find_str%
  29.     SED &&VV=0:0,%SP%,%TAB%%TAB%,%&VV%   //将部分换行符替换为TAB
  30.     ENVI &&dev_running=[^%NL1%]*Driver is running[^%NL1%]*%NL%
  31.     SED &&VV=0:0,%dev_running%,,%&VV%     //删除running的HWID
  32.     ENVI &&dev_stopped=[^%NL1%]*Device is currently stopped[^%NL1%]*%NL%
  33.     SED &&VV=0:0,%dev_stopped%,,%&VV%     //删除currently stopped的HWID
  34.     ENVI &&del_str=%TAB%%TAB%[^%NL1%]*%NL%
  35.     SED &&VV=0:0,%del_str%,%NL%,%&VV%  //删除不需要的信息
  36.     ENVI &&del_str=[^%NL1%]*matching device[^%NL1%]*%NL%   
  37.     SED &&VV=0:0,%del_str%,,%&VV%   //删除最后一行信息
  38.     ENVI-ret %~1=%&VV%
  39. _END

  40. _SUB InstallDevicesDriver
  41.     READ -,-1,&DevNum,%DEVICE_LIST%
  42.     ENVI &LineNum=1
  43.     LOOP #%&LineNum%<=%&DevNum%,
  44.     {
  45.          READ -, %&LineNum%,DevHWID,%DEVICE_LIST%   //读取一个设备ID
  46.          CALL InstallDriverForHWID %DevHWID%
  47.          CALC &LineNum=%&LineNum%+1 //处理下一行
  48.     }
  49. _END

  50. _SUB InstallDriverForHWID
  51.         ENVI &&hwid=%~1
  52.         FIND $%&hwid%=,EXIT

  53.         //查找DevHWID对应的驱动文件
  54.         EXEC* %run_fdrv% &Drv_Info=!fdrv.exe "%DRV_DIR%" "%&hwid%" 1
  55.     READ -,1,&&Drv_File,%&Drv_Info%
  56.     READ -,4,&&Drv_Inf,%&Drv_Info%
  57.     //没有找到,退出
  58.     FIND $%&Drv_File%=NOT_FOUND, TEAM WRIT -,$+0,%&hwid%: not found | EXIT

  59.     //找到了,继续安装
  60.     ENVI &INST_HWIDs=%INST_HWIDs%%&hwid%%NL%
  61.     WRIT -,$+0,%&hwid%: installed
  62.         TEAM MESS "%&Drv_File%" "%&Drv_Inf%"| EXIT
  63.         CALL Install_Driver_7Z "%&Drv_File%" "%&Drv_Inf%"
  64. _END



  65. _SUB Install_Driver_7Z
  66.     ENVI &Drv_File=%~1
  67.     ENVI &Drv_Inf=%~2
  68.     //得到驱动程序包的名称
  69.     FDIR fPath=%Drv_File%
  70.     FNAM fName=%Drv_File%
  71.     ENVI DrvFile_7z=%fPath%\%fName%.7z
  72.     //解压缩到%temp%\%fName%目录下,安装,并删除
  73.     MDIR %temp%\%fName%
  74.     EXEC* %run_7z% &result=!7z.exe x "%DrvFile_7z%" -y -o"%temp%\%fName%"
  75.     //拷贝*.cat文件到catroot,安装程序可能不会自动完成
  76.     FDIR fPath=%temp%\%fName%\%Drv_Inf%
  77.     FILE %fPath%\*.cat=>%windir%\System32\catroot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}
  78.     //安装驱动
  79.     DEVI %temp%\%fName%\%Drv_Inf%
  80.     //删除临时文件
  81.     FILE %temp%\%fName%
  82. _END
复制代码



加入一个"Device is currently stopped"状态的排除
另外FIND $%ARCH%=X64, ENVI DRV_DIR=%CurDir%\NT6x64! ENVI DRV_DIR=%CurDir%\NT6x86
这一段原版中多一个空格,造成DRV_DIR变量在64位系统下会多出一个空格
上面改了这两个。

点评

不过我在PE里试过, ACPI开头的都没安装驱动。还是关键字过滤靠谱一点。 或者加参数: *CC_0300: 显卡 *CC_02*: 网卡 这样也能避免很多不需要的HWID,少搜索几次。  详情 回复 发表于 2017-1-3 21:28
回复

使用道具 举报

43#
 楼主| 发表于 2017-1-3 21:28:40 | 只看该作者
红毛樱木 发表于 2017-1-3 21:20
加入一个"Device is currently stopped"状态的排除
另外FIND $%ARCH%=X64, ENVI DRV_DIR=%CurDir%\N ...


不过我在PE里试过, ACPI开头的都没安装驱动。还是关键字过滤靠谱一点。
或者加参数:
*CC_0300: 显卡
*CC_02*: 网卡
这样也能避免很多不需要的HWID,少搜索几次。

点评

网卡用那个通用ID不是很准,反正尽量全,ID匹配规范,还是上次说的那样,估计一个ID的所有行都得一行一行的匹配。。。  详情 回复 发表于 2017-1-3 21:32
回复

使用道具 举报

44#
发表于 2017-1-3 21:32:12 | 只看该作者
本帖最后由 红毛樱木 于 2017-1-3 21:43 编辑
sp_star 发表于 2017-1-3 21:28
不过我在PE里试过, ACPI开头的都没安装驱动。还是关键字过滤靠谱一点。
或者加参数:
*CC_0 ...

网卡用那个通用ID不是很准,反正尽量全,ID匹配规范,估计还得一个ID的所有行都得一行一行的匹配。。。
fdrv.exe源码不会改。。。不会C
元旦正好没事,用你这个fdrv.exe弄个了usb3.0/3.1的安装工具,这驱动安装奇葩,难搞。

点评

我已经不折腾了。。。 CC_02应该是准的,网卡的类型就是02  详情 回复 发表于 2017-1-3 22:03
回复

使用道具 举报

45#
 楼主| 发表于 2017-1-3 22:03:38 | 只看该作者
红毛樱木 发表于 2017-1-3 21:32
网卡用那个通用ID不是很准,反正尽量全,ID匹配规范,估计还得一个ID的所有行都得一行一行的匹配。。。
...

我已经不折腾了。。。
CC_02应该是准的,网卡的类型就是02

点评

也有可能USB网卡。。。  详情 回复 发表于 2017-1-3 22:16

评分

参与人数 1无忧币 +5 收起 理由
freesoft00 + 5

查看全部评分

回复

使用道具 举报

46#
发表于 2017-1-3 22:16:17 | 只看该作者
sp_star 发表于 2017-1-3 22:03
我已经不折腾了。。。
CC_02应该是准的,网卡的类型就是02

也有可能USB网卡。。。

点评

是的,只适用于PCI设备,USB不适用。但USB设备可以用USB*来过滤啊。 你看pecmd脚本就知道,这个参数直接传给devcon.exe status,所以,可以使用你想要的关键字。  详情 回复 发表于 2017-1-3 22:35
回复

使用道具 举报

47#
 楼主| 发表于 2017-1-3 22:35:02 | 只看该作者
红毛樱木 发表于 2017-1-3 22:16
也有可能USB网卡。。。

是的,只适用于PCI设备,USB不适用。但USB设备可以用USB*来过滤啊。
你看pecmd脚本就知道,这个参数直接传给devcon.exe status,所以,可以使用你想要的关键字。

点评

今天又研究了一下,发现用status命令读取的设备ID都是唯一ID,这个唯一ID用devcon的hwids命令和find命令都读不到。。。好头疼  详情 回复 发表于 2017-1-7 14:33
回复

使用道具 举报

48#
发表于 2017-1-7 14:33:07 | 只看该作者
本帖最后由 红毛樱木 于 2017-1-7 14:52 编辑
sp_star 发表于 2017-1-3 22:35
是的,只适用于PCI设备,USB不适用。但USB设备可以用USB*来过滤啊。
你看pecmd脚本就知道,这个参数直接 ...

今天又研究了一下,发现用status命令读取的设备ID都是唯一ID,这个唯一ID用devcon的hwids命令和find命令都读不到。。。好头疼

-------------------------------------------------------------
研究出来了,做个标记
比如唯一ID是
HDAUDIO\FUNC_01&VEN_8086&DEV_2809&SUBSYS_80860101&REV_1000\4&18DB7577&0&0201

前面加个@符号就可以标记了
回复

使用道具 举报

49#
发表于 2017-1-7 19:10:04 | 只看该作者
本帖最后由 红毛樱木 于 2017-1-7 19:14 编辑

AUTODRV_X64.7z (1.35 MB, 下载次数: 14)
AUTODRV_X86.7z (1.14 MB, 下载次数: 19)
更新了一下程序,按照“硬件 Id”和“兼容 Id”的列表,逐行匹配,更精准。做了一些特殊处理。另外驱动安装方式换成使用devcon.exe来操作,更合理。(LZ留意下站内消息)
如果有成功匹配,则在“%TEMP%\FIND_HWIDS.TXT”文件做记录,方便查看结果

注意不适合USB3.0/3.1驱动设备类型的安装,这类设备安装方式不同。(有这个需求的请留意此贴http://bbs.wuyou.net/forum.php?mod=viewthread&tid=385386)

点评

更新的fdrv.exe,可以输出多个匹配的结果。匹配规则还和以前一样。 需用PECMD来显示输出结果:  详情 回复 发表于 2017-1-9 19:30

评分

参与人数 1无忧币 +5 收起 理由
freesoft00 + 5

查看全部评分

回复

使用道具 举报

50#
 楼主| 发表于 2017-1-9 19:30:37 | 只看该作者
本帖最后由 sp_star 于 2017-1-10 10:43 编辑
红毛樱木 发表于 2017-1-7 19:10
更新了一下程序,按照“硬件 Id”和“兼容 Id”的列表,逐行匹配,更精准。做了一些特殊处理。另外驱动 ...

更新的fdrv.exe,可以输出多个匹配的结果。匹配规则还和以前一样。

下载:   new_fdrv.7z (5.97 KB, 下载次数: 26)

需用PECMD来显示输出结果:
  1. ENVI DRV_DIR=.\Drivers\NT6x86
  2. ENVI DEVHWID=PCI\VEN_8086&DEV_0102
  3. //ENVI DEVHWID=PCI\VEN_8086

  4. EXEC* &rtv=fdrv.exe %DRV_DIR% "%DevHWID%" 1
  5. mess %rtv%
复制代码

点评

能编译一个支持nt5.x运行的exe吗?03PE下有这个需求。  详情 回复 发表于 2017-1-15 16:40
附件里的fdrv在win7 x64下没反应。。。  详情 回复 发表于 2017-1-9 20:23
之前是直接读取输出的行就可以了,现在用",",不会处理了。。。  详情 回复 发表于 2017-1-9 20:16
哦,这样的话用PECMD分析fdrv.exe输出的结果也要改了  详情 回复 发表于 2017-1-9 20:11
回复

使用道具 举报

51#
发表于 2017-1-9 20:11:20 | 只看该作者
sp_star 发表于 2017-1-9 19:30
更新的fdrv.exe,可以输出多个匹配的结果。匹配规则还和以前一样。

下载:  

哦,这样的话用PECMD分析fdrv.exe输出的结果也要改了
回复

使用道具 举报

52#
发表于 2017-1-9 20:16:13 | 只看该作者
本帖最后由 红毛樱木 于 2017-1-9 20:34 编辑
sp_star 发表于 2017-1-9 19:30
更新的fdrv.exe,可以输出多个匹配的结果。匹配规则还和以前一样。

下载:  
  1.     READ -,1,&Drv_File,%&Drv_Info%
  2.     READ -,4,&Drv_Inf,%&Drv_Info%
复制代码

之前是直接读取输出的行就可以了,现在用",",不会处理了。。。

如果按照之前的方式,分行输出,第二个匹配的在下面接着输入,最后一行加一个匹配个数,这样处理是不是方便些。

点评

这样方便,因为后面的内容程序不处理了, 可以用PECMD来处理,这样后面的字段可以自己定义, 自己处理。  详情 回复 发表于 2017-1-9 20:37
回复

使用道具 举报

53#
发表于 2017-1-9 20:23:49 | 只看该作者
sp_star 发表于 2017-1-9 19:30
更新的fdrv.exe,可以输出多个匹配的结果。匹配规则还和以前一样。

下载:  

附件里的fdrv在win7 x64下没反应。。。

点评

命令行里不会显示输出,要pecmd来读取.  详情 回复 发表于 2017-1-9 20:35
回复

使用道具 举报

54#
 楼主| 发表于 2017-1-9 20:35:44 | 只看该作者
红毛樱木 发表于 2017-1-9 20:23
附件里的fdrv在win7 x64下没反应。。。

命令行里不会显示输出,要pecmd来读取.

点评

哦哦 运来如此。折腾下  详情 回复 发表于 2017-1-9 20:42
回复

使用道具 举报

55#
 楼主| 发表于 2017-1-9 20:37:57 | 只看该作者
红毛樱木 发表于 2017-1-9 20:16
之前是直接读取输出的行就可以了,现在用",",不会处理了。。。

如果按照之前的方式,分行输出,第 ...

这样方便,因为后面的内容程序不处理了, 可以用PECMD来处理,这样后面的字段可以自己定义, 自己处理。

点评

这样好像还有个问题,如果驱动所在的目录路径中有","的话,就复杂了。  详情 回复 发表于 2017-1-9 21:36
回复

使用道具 举报

56#
发表于 2017-1-9 20:42:44 | 只看该作者
sp_star 发表于 2017-1-9 20:35
命令行里不会显示输出,要pecmd来读取.

哦哦 运来如此。折腾下
回复

使用道具 举报

57#
发表于 2017-1-9 21:36:35 | 只看该作者
sp_star 发表于 2017-1-9 20:37
这样方便,因为后面的内容程序不处理了, 可以用PECMD来处理,这样后面的字段可以自己定义, 自己处理。

这样好像还有个问题,如果驱动所在的目录路径中有","的话,就复杂了。

点评

会有这么变态的目录吗?用","分隔个,主要是和后面字段保持一致,这样PECMD一行就能全部分离出来。 这个分隔符改改也容易,改成什么好呢?  详情 回复 发表于 2017-1-9 22:04
回复

使用道具 举报

58#
 楼主| 发表于 2017-1-9 22:04:06 | 只看该作者
红毛樱木 发表于 2017-1-9 21:36
这样好像还有个问题,如果驱动所在的目录路径中有","的话,就复杂了。

会有这么变态的目录吗?用","分隔个,主要是和后面字段保持一致,这样PECMD一行就能全部分离出来。
这个分隔符改改也容易,改成什么好呢?

点评

排除特殊情况啊 这也是一种。其他的分隔符,好像目录也可以设置的 不太好。  详情 回复 发表于 2017-1-9 22:45
回复

使用道具 举报

59#
发表于 2017-1-9 22:45:44 | 只看该作者
sp_star 发表于 2017-1-9 22:04
会有这么变态的目录吗?用","分隔个,主要是和后面字段保持一致,这样PECMD一行就能全部分离出来。
这个 ...

排除特殊情况啊 这也是一种。其他的分隔符,好像目录也可以设置的 不太好。
回复

使用道具 举报

60#
发表于 2017-1-9 22:47:20 | 只看该作者
之前那个分行,看上去比较靠谱一些。

点评

在一行输出,方便FORX和MSTR处理。  详情 回复 发表于 2017-1-10 10:44
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-6-29 16:45

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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