[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 【已解决】求助批处理从一堆文本文件中提取关键词写到csv中

本帖最后由 zhengwei007 于 2024-2-27 09:07 编辑

我有几百个这样的xml文档,文档中是以<item>开头,</item>结尾的,想通过批处理将里面内容整理出来,XML内容如下:
  1.   <item id="3" type="Weapon" name="宽剑">
  2.     <set name="icon" val="icon.weapon_broad_sword_i00" />
  3.     <set name="default_action" val="equip" />
  4.     <set name="weapon_type" val="sword" />
  5.     <set name="bodypart" val="rhand" />
  6.     <set name="random_damage" val="10" />
  7.     <set name="attack_range" val="40" />
  8.     <set name="damage_range" val="0;0;40;120" />
  9.     <set name="immediate_effect" val="1" />
  10.     <set name="material" val="steel" />
  11.     <set name="weight" val="1590" />
  12.     <set name="price" val="9600" />
  13.     <set name="soulshots" val="1" />
  14.     <set name="spiritshots" val="1" />
  15.     <for>
  16.       <set order="0x08" stat="pAtk" val="11" />
  17.       <set order="0x08" stat="mAtk" val="9" />
  18.       <set order="0x08" stat="rCrit" val="8" />
  19.       <set order="0x08" stat="pAtkSpd" val="379" />
  20.     </for>
  21.   </item>
  22.   <item id="4" type="Weapon" name="木棒">
  23.     <set name="icon" val="icon.weapon_club_i00" />
  24.     <set name="default_action" val="equip" />
  25.     <set name="weapon_type" val="blunt" />
  26.     <set name="bodypart" val="rhand" />
  27.     <set name="random_damage" val="20" />
  28.     <set name="attack_range" val="40" />
  29.     <set name="damage_range" val="0;0;40;120" />
  30.     <set name="immediate_effect" val="1" />
  31.     <set name="material" val="wood" />
  32.     <set name="weight" val="1870" />
  33.     <set name="price" val="590" />
  34.     <set name="soulshots" val="1" />
  35.     <set name="spiritshots" val="1" />
  36.     <for>
  37.       <set order="0x08" stat="pAtk" val="8" />
  38.       <set order="0x08" stat="mAtk" val="6" />
  39.       <set order="0x08" stat="rCrit" val="4" />
  40.       <add order="0x10" stat="accCombat" val="4.75" />
  41.       <set order="0x08" stat="pAtkSpd" val="379" />
  42.     </for>
  43.   </item>
  44.   </item>
  45.   <item id="1201" type="EtcItem" name="信仰凭证">
  46.     <set name="icon" val="icon.accessary_earing_of_wisdom_i00" />
  47.     <set name="immediate_effect" val="1" />
  48.     <set name="material" val="steel" />
  49.     <set name="is_tradable" val="false" />
  50.     <set name="is_dropable" val="false" />
  51.     <set name="is_sellable" val="false" />
  52.     <set name="is_depositable" val="false" />
  53.     <set name="is_stackable" val="true" />
  54.     <set name="is_questitem" val="true" />
  55.   </item>
复制代码
我已经将文件上传到网盘,大概意思如下:
1、将每个name拿出来,值拿出来列到文档中。
2、遇到0x0几的直接pass不要。
3、遇到新的没有的name,直接往表格最后增加新列。
4、标题列可能会很多,但没关系,一直往后排就行了。
按照上面的3个例子,输出结果举例:
  1. id name icon default_action weapon_type bodypart random_damage attack_range damage_range immediate_effect material weight price soulshots spiritshots pAtk mAtk rCrit pAtkSpd accCombat type is_tradable is_dropable is_sellable is_depositable is_stackable is_questitem
  2. 3 宽剑 icon.weapon_broad_sword_i00 equip sword rhand 10 40 0;0;40;120 1 steel 1590 9600 1 1 11 9 8 379
  3. 4 木棒 icon.weapon_club_i00 equip blunt rhand 20 40 0;0;40;120 1 wood 1870 590 1 1 8 6 4 4.75
  4. 1201 信仰凭证 icon.accessary_earing_of_wisdom_i00 1 steel EtcItem FALSE FALSE FALSE FALSE FALSE FALSE
复制代码
文件我打包了,请大佬帮忙看看。
链接:https://pan.baidu.com/s/1eIJ1l6VcI8OmFoyFJwvO-Q
提取码:x4jk
--来自百度网盘超级会员V9的分享

本帖最后由 zhengwei007 于 2024-2-26 10:20 编辑
czjt1234 发表于 2024-2-26 08:59


    <for>
      <set order="0x08" stat="pAtk" val="8" />
      <set order="0x08" stat="mAtk" val="6" />
      <set order="0x08" stat="rCrit" val="4" />
      <add order="0x10" stat="accCombat" val="4.75" />
      <set order="0x08" stat="pAtkSpd" val="379" />
    </for>
请问这些数据没读取,0x0*这些不要,但后面的stat=是要的,patk,matk这些是字段名,把这些字段当成“name=”就好了。

TOP

回复 4# czjt1234

都算,只是不要前面的order,你就把代码看成 <add stat="accCombat" val="4.75" />,字段是accCombat,值是4.75

TOP

都算,stat的值就是列表标题,val就是值。

TOP

谢谢楼上各位,问题已经完美解决。

TOP

回复  zhengwei007


讨论一下么
各方案的实际执行的优缺点
有讨论才有动力
czjt1234 发表于 2024-2-27 09:15


从结果看,你们的代码效果都能完美实现我想要的功能,运行速度都挺快的,大概5秒就出结果了,优点很明显。要让我这个外行说,我总结一下:
10楼代码:
        1)默认情况下,我必须将bat另存为ANSI 编码,因为我这WIN11默认是UTF-8。
        2)脚本里面需要手动指定两个路径,我分别重新指定过了。
11楼代码:
我认为没什么说的,我将代码在当前目录保存好后就可以直接运行了。

所以从上面看,11楼代码是最傻瓜式的。

TOP

返回列表