read命令读取ini特定节的语法
20天前 210

假设有配置文件内容如下:

[setting]
backround=back.jpg
WaitInst=30
WaitRestart=30

[software]
1 火绒杀毒=%windir%\setup\script\hr.exe /s
0 7zip=%windir%\setup\script\7z.exe /s

 

我用read命令怎么读取software节下的所有内容?帮助太简陋,实例文件看不懂,恳请指教

奖励
收藏
点赞
分享
最新回复 (15)
  • avatar image
    爱心会员VIP会员

    试试这个

    链接:https://share.weiyun.com/9goFn4mw 密码:jkkvxv

    里面也许有源码,我也忘记了

    最后于 20天前 被527104427编辑 ,原因:
    https://www.123pan.com/s/NflRVv-Cm5Sh
  • avatar image
    dhwc 20天前
    楼主   3

    谢谢,我学习下

  • avatar image
    anson4 19天前
    527104427 试试这个 链接:https://share.weiyun.com/9goFn4mw 密码:jkkvxv 里面也许有源码,我也忘记了

    这种方式,当内容比较多的时候,好像比较慢。

    有没有更高效的方法呢?

    单机计算
  • avatar image
    dhwc 18天前
    楼主   5

    我看了示例文件,并不能弹出正确信息啊?我看了下代码。里面没有指定ini文件路径?

  • avatar image
    dhwc 18天前
    楼主   6

    是不是可以这么理解,read命令并不能直接读取ini的指定节,而是读取所有ini的内容,再对其作处理后得到特定内容?

  • avatar image
    爱心会员VIP会员
    anson4 这种方式,当内容比较多的时候,好像比较慢。 有没有更高效的方法呢?

    也许用正则表达式会快点,不过最近没时间

    https://www.123pan.com/s/NflRVv-Cm5Sh
  • avatar image
    爱心会员VIP会员
    dhwc 我看了示例文件,并不能弹出正确信息啊?我看了下代码。里面没有指定ini文件路径?

    出错截图看看,不然怎么知道什么问题呢

    https://www.123pan.com/s/NflRVv-Cm5Sh
  • avatar image
    dhwc 18天前
    楼主   9
    527104427 出错截图看看,不然怎么知道什么问题呢

    啥都没有啊?运行没有任何窗口和消息

  • avatar image
    dhwc 我看了示例文件,并不能弹出正确信息啊?我看了下代码。里面没有指定ini文件路径?

    是示例里的readini代码段吗?按示例命令是可以读取到变量里的,不是弹框

    官方QQ群:872611894(群密码:pecmd.net)
  • avatar image
    dhwc 18天前
    楼主   11

    pecmd也支持0%这样的指代自身的变量吗?我尝试在代码中加入mess来查看但没有成功,明天我再看下

  • avatar image
    dhwc 17天前
    楼主   12

    ENVI^ EnviMode=1
    ENVI^ ForceLocal=1
    SET$ &NL=0d 0a
    READ test.txt,**,&a
    mess %&a%
    ENVI> &a=%&NL%
    ENVI &b=%~2
    ENVI &c=%~3
    mess %&b%

     

    我改了下代码,运行后,变量a能读取到所有内容,而变量b是空值

  • avatar image
    dhwc ENVI^ EnviMode=1ENVI^ ForceLocal=1SET$ &NL=0d 0aREAD test.txt,**,&amess %&a% ...

    传参是不是要在子函数里才能接收?

    官方QQ群:872611894(群密码:pecmd.net)
  • avatar image
    dhwc 12天前
    楼主   14
    caocaofff 传参是不是要在子函数里才能接收?

    你好超版,pecmd的帮助论坛里太分散了,看的头疼。read读取后还要逐行处理,搜了下,发现可以调用函数解决,貌似还更高效。

     

    代码如下:

     

     

    ENVI^ EnviMode=1

    ENVI &IniFile=%&CurDir%\config.ini

    ENVI &Section=database

    ENVI &Key=server

     

    SET$# &Buffer=*256 0

     

    CALL $--ret:&&Ret kernel32.dll,GetPrivateProfileStringW,$%&Section%,$%&Key%,$LALALA,*&&Buffer;,256,$%&IniFile%

     

    ENVI &RetValue=%&Ret%

    FIND $%&RetValue%>0, 

        SET-make &Value=&Buffer;

        MESS. 成功读取:Section=[%&Section%] Key=[%&Key%]@值=[%&Value%]#OK

    }

     

    但是这个读取的是特定键值,如果要读取整个节,,要把GetPrivateProfileStringW的lpkeyname的参数设为NULL,而call命令不支持传递NULL,请问超版有什么好办法?

  • avatar image
    dhwc 你好超版,pecmd的帮助论坛里太分散了,看的头疼。read读取后还要逐行处理,搜了下,发现可以调用函数解决,貌似还更高效。 代码如下: ENVI^ EnviMode=1 ENVI ...

    我是直接用的示例里面的readini代码

    官方QQ群:872611894(群密码:pecmd.net)
  • avatar image
    dhwc 11天前
    楼主   16
    caocaofff 我是直接用的示例里面的readini代码

    谢谢,我再认真学习学习

返回