找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 18890|回复: 8

[文本处理] 批处理该怎么筛选并复制出这些内容到另外个文件?

[复制链接]
发表于 2022-6-20 11:28:02 | 显示全部楼层 |阅读模式
本帖最后由 elf_zhou 于 2022-6-20 13:35 编辑

附件中的txt需要把msgstr ""的都摘取出来复制到另外个txt中,但需要整段复制。
  1. # Game Japanese (Japan) translation.
  2. # Copyright Epic Games, Inc. All Rights Reserved.
  3. #
  4. msgid ""
  5. msgstr ""
  6. "Project-Id-Version: Game\n"
  7. "POT-Creation-Date: 2022-06-20 03:05\n"
  8. "PO-Revision-Date: 2022-06-20 03:05\n"
  9. "Language-Team: \n"
  10. "Language: ja-JP\n"
  11. "MIME-Version: 1.0\n"
  12. "Content-Type: text/plain; charset=UTF-8\n"
  13. "Content-Transfer-Encoding: 8bit\n"
  14. "Plural-Forms: nplurals=1; plural=0;\n"

  15. #. Key:        2295A5CE4C86A968A4F8909861C06D94
  16. #. SourceLocation:        /Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.TextRenderActor_1.NewTextRenderComponent.Text
  17. #: /Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.TextRenderActor_1.NewTextRenderComponent.Text
  18. msgctxt ",2295A5CE4C86A968A4F8909861C06D94"
  19. msgid "Third Person"
  20. msgstr "测试"

  21. #. Key:        2C5373B4420A4B4B029E54B3650775C3
  22. #. SourceLocation:        /Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.Default__ThirdPersonExampleMap_C.文本3
  23. #: /Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.Default__ThirdPersonExampleMap_C.文本3
  24. msgctxt ",2C5373B4420A4B4B029E54B3650775C3"
  25. msgid "新增的文本"
  26. msgstr ""

  27. #. Key:        C01A2B544C59EDD5D36CDCB9CB52C463
  28. #. SourceLocation:        /Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.Default__ThirdPersonExampleMap_C.文本2
  29. #: /Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.Default__ThirdPersonExampleMap_C.文本2
  30. msgctxt ",C01A2B544C59EDD5D36CDCB9CB52C463"
  31. msgid "修改的文本"
  32. msgstr "修改的文本"

  33. #. Key:        laodewenben
  34. #. SourceLocation:        /Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.Default__ThirdPersonExampleMap_C.文本1
  35. #: /Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.Default__ThirdPersonExampleMap_C.文本1
  36. msgctxt ",laodewenben"
  37. msgid "老的文本"
  38. msgstr ""
复制代码
筛选出来的复制到另外个txt的结果应该是
  1. #. Key:        2C5373B4420A4B4B029E54B3650775C3
  2. #. SourceLocation:        /Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.Default__ThirdPersonExampleMap_C.文本3
  3. #: /Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.Default__ThirdPersonExampleMap_C.文本3
  4. msgctxt ",2C5373B4420A4B4B029E54B3650775C3"
  5. msgid "新增的文本"
  6. msgstr ""

  7. #. Key:        laodewenben
  8. #. SourceLocation:        /Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.Default__ThirdPersonExampleMap_C.文本1
  9. #: /Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.Default__ThirdPersonExampleMap_C.文本1
  10. msgctxt ",laodewenben"
  11. msgid "老的文本"
  12. msgstr ""
复制代码
发表于 2022-6-20 12:30:35 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
  4.     set n=0
  5.     for /f "usebackq delims=" %%j in ("%%i") do (
  6.         set "str=%%j"
  7.         if "!str:~,7!"=="#. Key:" set n=1
  8.         if !n! equ 1 echo,%%j
  9.         if "%%j"=="msgstr """ echo,&set n=0
  10.     )
  11. )
  12. pause
复制代码
 楼主| 发表于 2022-6-20 13:30:27 | 显示全部楼层
qixiaobin0715 发表于 2022-6-20 12:30



    大佬出来结果是这样的,好像没有筛选出来。。。
#. Key: 2295A5CE4C86A968A4F8909861C06D94
#. SourceLocation:      /Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMapersistentLevel.TextRenderActor_1.NewTextRenderComponent.Text
#: /Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.ThirdPersonExampleMap:PersistentLevel.TextRenderActor_1.NewTextRenderComponent.Text
msgctxt ",2295A5CE4C86A968A4F8909861C06D94"
msgid "Third Person"
msgstr "娴嬭瘯"
#. Key: 2C5373B4420A4B4B029E54B3650775C3
#. SourceLocation:      /Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.Default__ThirdPersonExampleMap_C.鏂囨湰3
#: /Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.Default__ThirdPersonExampleMap_C.鏂囨湰3
msgctxt ",2C5373B4420A4B4B029E54B3650775C3"
msgid "鏂板?鐨勬枃鏈?
msgstr ""

#. Key: C01A2B544C59EDD5D36CDCB9CB52C463
#. SourceLocation:      /Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.Default__ThirdPersonExampleMap_C.鏂囨湰2
#: /Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.Default__ThirdPersonExampleMap_C.鏂囨湰2
msgctxt ",C01A2B544C59EDD5D36CDCB9CB52C463"
msgid "淇?敼鐨勬枃鏈?
msgstr ""

#. Key: laodewenben
#. SourceLocation:      /Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.Default__ThirdPersonExampleMap_C.鏂囨湰1
#: /Game/ThirdPersonBP/Maps/ThirdPersonExampleMap.Default__ThirdPersonExampleMap_C.鏂囨湰1
msgctxt ",laodewenben"
msgid "鑰佺殑鏂囨湰"
msgstr ""
发表于 2022-6-20 15:44:36 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2022-6-20 17:08 编辑

回复 3# elf_zhou
如果附件中的txt文件只有一个,假设为1.txt,将下面代码另存为ANSI编码:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set hh=^


  4. (for /f "delims=" %%i in (1.txt) do (
  5.     set "str1=%%i"
  6.     if "!str1:~,7!"=="#. Key:" set n=1
  7.     if !n! equ 1 set str=!str!!hh!%%i
  8.     if "!str1:~,6!"=="msgstr" (
  9.         set n=0
  10.         if "%%i"=="msgstr """ echo,!str!
  11.         set str=
  12.     )
  13. ))>new_1.txt
  14. pause
复制代码
上面第4、5行空行要保留,不要去除。

评分

参与人数 1技术 +1 收起 理由
elf_zhou + 1 搞定!多谢

查看全部评分

 楼主| 发表于 2022-6-20 16:27:59 | 显示全部楼层
回复  elf_zhou
如果附件中的txt文件只有一个,假设为1.txt,将下面代码另存为ANSI编码:上面第4、5行空行 ...
qixiaobin0715 发表于 2022-6-20 15:44

厉害,多谢大佬搞定拉
 楼主| 发表于 2022-6-20 17:06:09 | 显示全部楼层
回复  elf_zhou
如果附件中的txt文件只有一个,假设为1.txt,将下面代码另存为ANSI编码:上面第4、5行空行 ...
qixiaobin0715 发表于 2022-6-20 15:44

顺便再问下大佬怎么将结果全部保存到一个新的txt中,我自己加了一段只保存了第一个筛选出的结果
发表于 2022-6-20 17:08:47 | 显示全部楼层
回复 6# elf_zhou
已修改

评分

参与人数 1技术 +1 收起 理由
elf_zhou + 1 感谢!

查看全部评分

发表于 2022-7-12 09:15:06 | 显示全部楼层
回复  elf_zhou
如果附件中的txt文件只有一个,假设为1.txt,将下面代码另存为ANSI编码:上面第4、5行空行 ...
qixiaobin0715 发表于 2022-6-20 15:44



    借鉴大神的代码,可以解决小段(8000字节之内)文字的摘录,感谢。
    但当要摘录的文字总长度达8000字节左右就会出现不可控的现象,能否用批处理的方法(不用第三方工具)摘录2关键字之间长度超过8000字节的文字段?
发表于 2022-7-12 15:15:11 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2022-7-12 15:17 编辑

回复 8# hfxiang
单行长度不超过8192应当可以通过set /p可以实现,不会像楼主要求的那么精确。未试过。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 19:26 , Processed in 0.022270 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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