标题: [文本处理] 批处理提取、合并方面的小问题,谢谢您 [打印本页]
作者: 灯塔彭于晏 时间: 2020-12-23 14:12 标题: 批处理提取、合并方面的小问题,谢谢您
有文本A.TXT,内容如下:- 说的点前往点前往
- 动物全都
- 动物全都的
- dw的
- dwq
- 动物全都动物
- [#宝石 深海の灯火 - cocon的插画 - pixiv|https://www.pixiv.net/artworks/85114251]
- [#水風船 夏の刹那 - cocon的插画 - pixiv|https://www.pixiv.net/artworks/84903343]
- [#青 glass Apple - cocon的插画 - pixiv|https://www.pixiv.net/artworks/84671670]
- [#貝殻 波打ち際のミラーケーキ - cocon的插画 - pixiv|https://www.pixiv.net/artworks/84472822]
- [#創作 青薔薇 - cocon的插画 - pixiv|https://www.pixiv.net/artworks/84373822]
- [#宇宙 Milky Way blend - cocon的插画 - pixiv|https://www.pixiv.net/artworks/83832269]
- 说的点前往点前往
- 动物全都
- 动物全都的
- dw的
- dwq
- 动物全都动物
- [#宝石 深海の灯火 - cocon的插画 - pixiv|https://www.pixiv.net/artworks/85114251]
- [#水風船 夏の刹那 - cocon的插画 - pixiv|https://www.pixiv.net/artworks/84903343]
- [#青 glass Apple - cocon的插画 - pixiv|https://www.pixiv.net/artworks/84671670]
- [#貝殻 波打ち際のミラーケーキ - cocon的插画 - pixiv|https://www.pixiv.net/artworks/84472822]
- [#創作 青薔薇 - cocon的插画 - pixiv|https://www.pixiv.net/artworks/84373822]
- [#宇宙 Milky Way blend - cocon的插画 - pixiv|https://www.pixiv.net/artworks/83832269]
复制代码
想实现的效果是:
在上下顺序不变的情况下,提取所有[#开头的行,到新文本B.TXT,格式如:- [#宝石 深海の灯火 - cocon的插画 - pixiv|https://www.pixiv.net/artworks/85114251]
- [#水風船 夏の刹那 - cocon的插画 - pixiv|https://www.pixiv.net/artworks/84903343]
- [#青 glass Apple - cocon的插画 - pixiv|https://www.pixiv.net/artworks/84671670]
- [#貝殻 波打ち際のミラーケーキ - cocon的插画 - pixiv|https://www.pixiv.net/artworks/84472822]
- [#創作 青薔薇 - cocon的插画 - pixiv|https://www.pixiv.net/artworks/84373822]
- [#宇宙 Milky Way blend - cocon的插画 - pixiv|https://www.pixiv.net/artworks/83832269]
- [#宝石 深海の灯火 - cocon的插画 - pixiv|https://www.pixiv.net/artworks/85114251]
- [#水風船 夏の刹那 - cocon的插画 - pixiv|https://www.pixiv.net/artworks/84903343]
- [#青 glass Apple - cocon的插画 - pixiv|https://www.pixiv.net/artworks/84671670]
- [#貝殻 波打ち際のミラーケーキ - cocon的插画 - pixiv|https://www.pixiv.net/artworks/84472822]
- [#創作 青薔薇 - cocon的插画 - pixiv|https://www.pixiv.net/artworks/84373822]
- [#宇宙 Milky Way blend - cocon的插画 - pixiv|https://www.pixiv.net/artworks/83832269]
复制代码
而A.TXT中,没有[#开头的部分,保持顺序输出到C.TXT。且每组内容之间有2个空格,如效果图:
作者: 灯塔彭于晏 时间: 2020-12-23 14:14
谢谢您了! 方便您测试,上传了文本~
文本只是演示了结构部分。实际情况是 [# 开头的内容,是固定为6个(和文本一样),但纯文字部分,数量不一。
谢谢了。
作者: terse 时间: 2020-12-23 14:33
第一个提取[#开头简单一点
虽然加个v参数能排除[#开头的 要加空行的话需要另行处理- @echo off
- @findstr /ib "\[#" a.txt
- pause
复制代码
作者: 灯塔彭于晏 时间: 2020-12-23 15:19
本帖最后由 灯塔彭于晏 于 2020-12-23 15:20 编辑
回复 3# terse
谢谢谢谢~ 只是,非[#开头的部分 如何到C.TXT,您遗漏了。
拆分A.TXT的内容到2个文本。
一个文本里包含了[#开头的行。
一个包含 非[# 开头的内容的。
而我好奇的就是 非[# 开头的部分,因为这部分内容的行数不固定,不知道该如何提取,并之间加空格区分。
[#的内容是固定6行。
作者: qixiaobin0715 时间: 2020-12-23 16:40
本帖最后由 qixiaobin0715 于 2020-12-24 10:44 编辑
回复 1# 灯塔彭于晏
效率可能差点。试试吧!!!- @echo off
- setlocal enabledelayedexpansion
- set n=0
- for /f "delims=" %%a in (a.txt) do (
- set "str=%%a"
- if "!str:~0,2!"=="[#" (
- set /a n+=1
- set /a m=n%%6
- echo %%a>>b.txt
- if !m!==0 (echo,&&echo,)>>c.txt
- ) else (
- echo %%a,>>c.txt
- )
- )
- pause
复制代码
作者: terse 时间: 2020-12-23 16:49
本帖最后由 terse 于 2020-12-23 16:57 编辑
- @echo off&setlocal enabledelayedexpansion
- findstr /ib "\[#" <"a.txt" >b.txt
- (for /f "delims=" %%i in (a.txt) do (
- set "str=%%i"
- if "!str:~,2!" neq "[#" (
- set g=&&echo;%%i
- ) else if not defined g set g=1&echo;&echo;
- ))>c.txt
- pause
复制代码
作者: 灯塔彭于晏 时间: 2020-12-23 20:18
回复 6# terse
您好,按照您的方案的确实现了要求。谢谢
请问: 输出到C.TXT中的内容,如何在不破坏结构的情况下,每一行内容最后加一个英文逗号 , 呢?
我找的代码都是重新排列了……
好纠结。
谢谢再次指点~
作者: terse 时间: 2020-12-23 20:54
替换5-7行- if "!str:~,2!" neq "[#" (
- set g=&&echo;%%i;
- ) else if not defined g set g=1&echo;;&echo;;
复制代码
回复 7# 灯塔彭于晏
作者: 灯塔彭于晏 时间: 2020-12-24 09:24
回复 5# qixiaobin0715
您好,按照您的方案的确实现了要求。谢谢
请问: 输出到C.TXT中的内容,如何在不破坏结构的情况下,每一行内容最后加一个英文逗号 , 呢?
我找的代码都是重新排列了……
好纠结。
谢谢再次指点~
作者: qixiaobin0715 时间: 2020-12-24 10:18
回复 9# 灯塔彭于晏
5楼代码:第11行“%%a”后加逗号或
6楼代码:第6行最后加逗号
试一试
作者: 灯塔彭于晏 时间: 2020-12-24 10:20
回复 10# qixiaobin0715
成了,谢谢您!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |