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

[文本处理] 批处理提取、合并方面的小问题,谢谢您

有文本A.TXT,内容如下:
  1. 说的点前往点前往
  2. 动物全都
  3. 动物全都的
  4. dw的
  5. dwq
  6. 动物全都动物
  7. [#宝石 深海の灯火 - cocon的插画 - pixiv|https://www.pixiv.net/artworks/85114251]
  8. [#水風船 夏の刹那 - cocon的插画 - pixiv|https://www.pixiv.net/artworks/84903343]
  9. [#青 glass Apple - cocon的插画 - pixiv|https://www.pixiv.net/artworks/84671670]
  10. [#貝殻 波打ち際のミラーケーキ - cocon的插画 - pixiv|https://www.pixiv.net/artworks/84472822]
  11. [#創作 青薔薇 - cocon的插画 - pixiv|https://www.pixiv.net/artworks/84373822]
  12. [#宇宙 Milky Way blend - cocon的插画 - pixiv|https://www.pixiv.net/artworks/83832269]
  13. 说的点前往点前往
  14. 动物全都
  15. 动物全都的
  16. dw的
  17. dwq
  18. 动物全都动物
  19. [#宝石 深海の灯火 - cocon的插画 - pixiv|https://www.pixiv.net/artworks/85114251]
  20. [#水風船 夏の刹那 - cocon的插画 - pixiv|https://www.pixiv.net/artworks/84903343]
  21. [#青 glass Apple - cocon的插画 - pixiv|https://www.pixiv.net/artworks/84671670]
  22. [#貝殻 波打ち際のミラーケーキ - cocon的插画 - pixiv|https://www.pixiv.net/artworks/84472822]
  23. [#創作 青薔薇 - cocon的插画 - pixiv|https://www.pixiv.net/artworks/84373822]
  24. [#宇宙 Milky Way blend - cocon的插画 - pixiv|https://www.pixiv.net/artworks/83832269]
复制代码
想实现的效果是:
上下顺序不变的情况下,提取所有[#开头的行,到新文本B.TXT,格式如:
  1. [#宝石 深海の灯火 - cocon的插画 - pixiv|https://www.pixiv.net/artworks/85114251]
  2. [#水風船 夏の刹那 - cocon的插画 - pixiv|https://www.pixiv.net/artworks/84903343]
  3. [#青 glass Apple - cocon的插画 - pixiv|https://www.pixiv.net/artworks/84671670]
  4. [#貝殻 波打ち際のミラーケーキ - cocon的插画 - pixiv|https://www.pixiv.net/artworks/84472822]
  5. [#創作 青薔薇 - cocon的插画 - pixiv|https://www.pixiv.net/artworks/84373822]
  6. [#宇宙 Milky Way blend - cocon的插画 - pixiv|https://www.pixiv.net/artworks/83832269]
  7. [#宝石 深海の灯火 - cocon的插画 - pixiv|https://www.pixiv.net/artworks/85114251]
  8. [#水風船 夏の刹那 - cocon的插画 - pixiv|https://www.pixiv.net/artworks/84903343]
  9. [#青 glass Apple - cocon的插画 - pixiv|https://www.pixiv.net/artworks/84671670]
  10. [#貝殻 波打ち際のミラーケーキ - cocon的插画 - pixiv|https://www.pixiv.net/artworks/84472822]
  11. [#創作 青薔薇 - cocon的插画 - pixiv|https://www.pixiv.net/artworks/84373822]
  12. [#宇宙 Milky Way blend - cocon的插画 - pixiv|https://www.pixiv.net/artworks/83832269]
复制代码
而A.TXT中,没有[#开头的部分,保持顺序输出到C.TXT。且每组内容之间有2个空格,如效果图:

谢谢您了! 方便您测试,上传了文本~

文本只是演示了结构部分。实际情况是 [# 开头的内容,是固定为6个(和文本一样),但纯文字部分,数量不一。
谢谢了。

TOP

第一个提取[#开头简单一点
虽然加个v参数能排除[#开头的 要加空行的话需要另行处理
  1. @echo off
  2. @findstr /ib "\[#" a.txt
  3. pause
复制代码

TOP

本帖最后由 灯塔彭于晏 于 2020-12-23 15:20 编辑

回复 3# terse


    谢谢谢谢~ 只是,非[#开头的部分 如何到C.TXT,您遗漏了。
    拆分A.TXT的内容到2个文本。
     一个文本里包含了[#开头的行。
     一个包含 非[# 开头的内容的。

而我好奇的就是 非[# 开头的部分,因为这部分内容的行数不固定,不知道该如何提取,并之间加空格区分。

[#的内容是固定6行。

TOP

本帖最后由 qixiaobin0715 于 2020-12-24 10:44 编辑

回复 1# 灯塔彭于晏
效率可能差点。试试吧!!!
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set n=0
  4. for /f "delims=" %%a in (a.txt) do (
  5.     set "str=%%a"
  6.     if "!str:~0,2!"=="[#" (
  7.         set /a n+=1
  8.         set /a m=n%%6
  9.         echo %%a>>b.txt
  10.         if !m!==0 (echo,&&echo,)>>c.txt
  11.     ) else (
  12.         echo %%a,>>c.txt
  13. )
  14. )
  15. pause
复制代码
1

评分人数

TOP

本帖最后由 terse 于 2020-12-23 16:57 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. findstr /ib "\[#" <"a.txt" >b.txt
  3. (for /f "delims=" %%i in (a.txt) do (
  4.      set "str=%%i"
  5.      if "!str:~,2!" neq "[#" (
  6.              set g=&&echo;%%i
  7.      ) else if not defined g set g=1&echo;&echo;
  8. ))>c.txt
  9. pause
复制代码
1

评分人数

TOP

回复 6# terse


    您好,按照您的方案的确实现了要求。谢谢
请问: 输出到C.TXT中的内容,如何在不破坏结构的情况下,每一行内容最后加一个英文逗号  ,  呢?
我找的代码都是重新排列了……
好纠结。
谢谢再次指点~

TOP

替换5-7行
  1.      if "!str:~,2!" neq "[#" (
  2.              set g=&&echo;%%i;
  3.      ) else if not defined g set g=1&echo;;&echo;;
复制代码
回复 7# 灯塔彭于晏

TOP

回复 5# qixiaobin0715


     您好,按照您的方案的确实现了要求。谢谢
请问: 输出到C.TXT中的内容,如何在不破坏结构的情况下,每一行内容最后加一个英文逗号  ,  呢?
我找的代码都是重新排列了……
好纠结。
谢谢再次指点~

TOP

回复 9# 灯塔彭于晏
5楼代码:第11行“%%a”后加逗号或
6楼代码:第6行最后加逗号
试一试

TOP

回复 10# qixiaobin0715


    成了,谢谢您!

TOP

返回列表