标题: [文本处理] 批处理如何将txt文本的内容两行数合并成一行? [打印本页]
作者: Rasm 时间: 2020-3-4 19:50 标题: 批处理如何将txt文本的内容两行数合并成一行?
好孩子
haohaizi@qq.com
批处理
pichuli@163.com
网易
wangyi@126.com
搜狐
sohu@hotmail.com
成处理成如下,并导出到新文本
好孩子,haohaizi@qq.com
批处理,pichuli@163.com
网易,wangyi@126.com
搜狐,sohu@hotmail.com
作者: Gin_Q 时间: 2020-3-4 20:29
有个本办法:可以把读到的第一行放到一个临时文件,读到第二行时取回第一行,然后合并!
作者: went 时间: 2020-3-4 20:52
本帖最后由 went 于 2020-3-4 20:54 编辑
- @echo off
- (
- for /f "delims=" %%i in (0.txt) do echo %%i | findstr "@" >nul 2>nul && echo %%i || set /p="%%i,"<nul
- ) > new.txt
- pause
复制代码
0.txt是源文件,new.txt是新文件
作者: Rasm 时间: 2020-3-6 10:23
回复 3# went
你这个,全部变成两行了
所有数据就合并在2行
作者: went 时间: 2020-3-6 11:18
回复 5# Rasm
试了下没问题呀,你是不是把源文件@符号删了,或者你把源文件打包传上来看看
作者: Gin_Q 时间: 2020-3-6 12:25
快十年了!
作者: Rasm 时间: 2020-3-6 12:41
回复 5# went
源文件- 061611ma----一星会员----注册时间:2019-07-30 01:44
- 0611ma----061611Ma----
- 369100l----一星会员----注册时间:2019-03-05 02:49
- 369100l----364100L----
- a10059581----一星会员----注册时间:2019-08-01 10:33
- a10059581----A15459581----
- a36987250----一星会员----注册时间:2019-03-13 19:30
- a36987250----A3698741250----
- a9520----一星会员----注册时间:2019-03-27 14:36
- a9520----A9520----
- as7433----一星会员----注册时间:2018-10-11 09:30
- as7433----As7433----
- bmaohulala----一星会员----注册时间:2019-03-15 18:23
- bmaohulala----Aa4219114----
- c877848----一星会员----注册时间:2019-03-07 05:33
- c877848----C877848----
- chyul998----一星会员----注册时间:2019-08-13 04:09
- chyul998----19528Cy----
- cwbs001----一星会员----注册时间:2019-07-28 00:27
- cwbs001----Jy032646----
复制代码
作者: went 时间: 2020-3-6 13:33
回复 7# Rasm - for /f "delims=" %%i in (0.txt) do echo %%i | findstr "会员" >nul 2>nul && echo %%i || set /p="%%i,"<nul
复制代码
你改一下分隔符啊
代码也不看一下
作者: Rasm 时间: 2020-3-6 14:38
回复 8# went
不行,中文的乱码啊,没办法出去到新文本
作者: went 时间: 2020-3-6 15:01
本帖最后由 went 于 2020-3-6 15:02 编辑
回复 9# Rasm
你源文件是utf8,bat就保存为utf8并加上 chcp65001
作者: xczxczxcz 时间: 2020-3-6 16:01
本帖最后由 xczxczxcz 于 2020-3-6 16:05 编辑
路过写一个- [regex]::replace(((gc '.\0.txt' -enc utf8) -join "`r`n"),"([^`r`n]+)`r?`n([^`r`n]+`r?`n?)",'$1,$2')|sc '.\new.log';
复制代码
作者: wujunkai 时间: 2020-3-6 16:28
- @echo off
- @setlocal enabledelayedexpansion
-
- set /P fin=请输入读取的文件名
- set /P fout=请输入输出的文件名
-
- if not exist %fin% (
- echo 文件不存在
- exit /B
- )
-
- set "double=false"
- set "str="
-
- for /F "tokens=*" %%i in (%fin%) do (
- if "!double!"=="false" (
- set "str=%%i"
- set "double=true"
- ) else (
- set "str=!str! , %%i"
- set "double=false"
- echo !str! >> %fout%
- )
- )
复制代码
没有测试过,麻烦看看效果,不行我再改
作者: xczxczxcz 时间: 2020-3-6 16:39
若改成 二进制合并,则不受编码影响。
作者: Batcher 时间: 2020-3-6 19:04
回复 9# Rasm
参考 Q-05
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
打开原始txt
文件
另存为
选择 ANSI 编码
保存
再执行脚本试试
作者: Batcher 时间: 2020-3-6 19:53
回复 1# Rasm
推荐试试 sed 命令,写法比较简单:- sed "$!N;s/\n/,/" "原文件.txt" > "结果.txt"
复制代码
http://bcn.bathome.net/s/tool/index.html?key=sed
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |