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

[文本处理] 批处理如何将txt文本的内容两行数合并成一行?

[复制链接]
发表于 2020-3-4 19:50:42 | 显示全部楼层 |阅读模式
好孩子
haohaizi@qq.com
批处理
pichuli@163.com
网易
wangyi@126.com
搜狐
sohu@hotmail.com


成处理成如下,并导出到新文本

好孩子,haohaizi@qq.com
批处理,pichuli@163.com
网易,wangyi@126.com
搜狐,sohu@hotmail.com
发表于 2020-3-4 20:29:07 | 显示全部楼层
有个本办法:可以把读到的第一行放到一个临时文件,读到第二行时取回第一行,然后合并!
发表于 2020-3-4 20:52:39 | 显示全部楼层
本帖最后由 went 于 2020-3-4 20:54 编辑
  1. @echo off
  2. (
  3.         for /f "delims=" %%i in (0.txt) do echo %%i | findstr "@" >nul 2>nul && echo %%i || set /p="%%i,"<nul
  4. ) > new.txt
  5. pause
复制代码
0.txt是源文件,new.txt是新文件

评分

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

查看全部评分

 楼主| 发表于 2020-3-6 10:23:54 | 显示全部楼层
回复 3# went


    你这个,全部变成两行了


所有数据就合并在2行
发表于 2020-3-6 11:18:17 | 显示全部楼层
回复 5# Rasm


    试了下没问题呀,你是不是把源文件@符号删了,或者你把源文件打包传上来看看
发表于 2020-3-6 12:25:56 | 显示全部楼层
快十年了!
 楼主| 发表于 2020-3-6 12:41:15 | 显示全部楼层
回复 5# went


源文件

  1.     061611ma----一星会员----注册时间:2019-07-30 01:44
  2. 0611ma----061611Ma----
  3. 369100l----一星会员----注册时间:2019-03-05 02:49
  4. 369100l----364100L----
  5. a10059581----一星会员----注册时间:2019-08-01 10:33
  6. a10059581----A15459581----
  7. a36987250----一星会员----注册时间:2019-03-13 19:30
  8. a36987250----A3698741250----
  9. a9520----一星会员----注册时间:2019-03-27 14:36
  10. a9520----A9520----
  11. as7433----一星会员----注册时间:2018-10-11 09:30
  12. as7433----As7433----
  13. bmaohulala----一星会员----注册时间:2019-03-15 18:23
  14. bmaohulala----Aa4219114----
  15. c877848----一星会员----注册时间:2019-03-07 05:33
  16. c877848----C877848----
  17. chyul998----一星会员----注册时间:2019-08-13 04:09
  18. chyul998----19528Cy----
  19. cwbs001----一星会员----注册时间:2019-07-28 00:27
  20. cwbs001----Jy032646----
复制代码
发表于 2020-3-6 13:33:28 | 显示全部楼层
回复 7# Rasm
  1. for /f "delims=" %%i in (0.txt) do echo %%i | findstr "会员" >nul 2>nul && echo %%i || set /p="%%i,"<nul
复制代码
你改一下分隔符啊
代码也不看一下
 楼主| 发表于 2020-3-6 14:38:24 | 显示全部楼层
回复 8# went


    不行,中文的乱码啊,没办法出去到新文本
发表于 2020-3-6 15:01:31 | 显示全部楼层
本帖最后由 went 于 2020-3-6 15:02 编辑

回复 9# Rasm
你源文件是utf8,bat就保存为utf8并加上 chcp65001

评分

参与人数 1技术 +1 收起 理由
Rasm + 1 感谢指导

查看全部评分

发表于 2020-3-6 16:01:44 | 显示全部楼层
本帖最后由 xczxczxcz 于 2020-3-6 16:05 编辑

路过写一个

  1. [regex]::replace(((gc '.\0.txt' -enc utf8) -join "`r`n"),"([^`r`n]+)`r?`n([^`r`n]+`r?`n?)",'$1,$2')|sc '.\new.log';
复制代码

评分

参与人数 1技术 +1 收起 理由
Rasm + 1 感谢指导

查看全部评分

发表于 2020-3-6 16:28:17 | 显示全部楼层
  1. @echo off
  2. @setlocal enabledelayedexpansion

  3. set /P fin=请输入读取的文件名
  4. set /P fout=请输入输出的文件名

  5. if not exist %fin% (
  6.     echo 文件不存在
  7.     exit /B
  8. )

  9. set "double=false"
  10. set "str="

  11. for /F "tokens=*" %%i in (%fin%) do (
  12.     if "!double!"=="false" (
  13.         set "str=%%i"
  14.         set "double=true"
  15.     ) else (
  16.         set "str=!str! , %%i"
  17.         set "double=false"
  18.         echo !str! >> %fout%
  19.     )
  20. )
复制代码
没有测试过,麻烦看看效果,不行我再改
发表于 2020-3-6 16:39:48 | 显示全部楼层
若改成 二进制合并,则不受编码影响。
发表于 2020-3-6 19:04:12 | 显示全部楼层
回复 9# Rasm


参考 Q-05
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ

打开原始txt
文件
另存为
选择 ANSI 编码
保存

再执行脚本试试
发表于 2020-3-6 19:53:04 | 显示全部楼层
回复 1# Rasm


推荐试试 sed 命令,写法比较简单:
  1. sed "$!N;s/\n/,/" "原文件.txt" > "结果.txt"
复制代码
http://bcn.bathome.net/s/tool/index.html?key=sed

评分

参与人数 1技术 +1 收起 理由
Rasm + 1 简单,干练!

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 15:33 , Processed in 0.020824 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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