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

[文本处理] [已解决]BAT批处理如何把文本每两行合并成一行?

[复制链接]
发表于 2014-4-22 13:22:31 | 显示全部楼层 |阅读模式
想让批处理实现txt文本处理,举例在附件中 麻烦高手帮忙写给批处理 谢谢
XP系统
一.txt文本内容 经过批处理处理后  变成二.txt文本内容格式 把处理结果导出到 二.txt文本中

118236039954793 446169323
118236039954795 469349980
118236039954797 733730203
118236039954799 416669585
118236039954801 870682049
118236039954803 265021929
118236039954805 645417838
118236039954787 865587970
118236039954819 224340819
118236039954821 552145002
以上是一.txt文本内容
以下经过批处理处理后
二.txt文本内容
118236039954793 446169323        118236039954795 469349980
118236039954797 733730203        118236039954799 416669585
118236039954801 870682049        118236039954803 265021929
118236039954805 645417838        118236039954787 865587970
118236039954819 224340819        118236039954821 552145002

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2014-4-22 17:36:07 | 显示全部楼层
把多行文本拼接成用连接的一行 ,楼主可以参考如下代码。
方法1  :
@echo off
:: 把多行文本拼接成用;连接的一行
:: <nul 不能省略,省略掉就无法运行下去
for /f "tokens=*" %%i in (源文件.txt) do set /p "var=%%i;" <nul >>目标文件.txt
exit

方法2  :
set tmpstr=
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in (1.txt) do set tmpstr=!tmpstr! %%i
echo %tmpstr%
pause
exit

方法3  :
还有一种不启用变量延迟的方法,能兼容除英文双引号外的所有特殊字符:
@echo off
:: code by jm 2006-12-14
for /f "delims=" %%i in (1.txt) do call set "var=%%var%%%%i"
echo "%var%"
pause

评分

参与人数 2技术 +2 收起 理由
pengyou86 + 1 乐于助人
Batcher + 1 乐于助人

查看全部评分

发表于 2014-4-22 17:48:10 | 显示全部楼层
  1. gawk "{printf (NR%2)?$0 :$0"\n"}" a.txt > b.txt
复制代码

评分

参与人数 2技术 +2 收起 理由
pengyou86 + 1 乐于助人
Batcher + 1 乐于助人

查看全部评分

发表于 2014-4-22 17:48:49 | 显示全部楼层
  1. sed "$!N;s/\n/ /" a.txt > b.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
pengyou86 + 1 乐于助人

查看全部评分

发表于 2014-4-22 17:52:16 | 显示全部楼层
回复 1# pengyou86

  1. @echo off
  2. for /f "delims=U" %%i in ('cmd /u /c echo 唉') do set "tab=%%i"
  3. setlocal enabledelayedexpansion
  4. (for /f "delims=" %%i in (处理前.txt) do (
  5.     if defined str (
  6.        echo,!str!%tab%%%i&set "str="
  7.     ) else set "str=%%i"
  8. )
  9.     if defined str echo !str!
  10. )>处理后.txt
  11. pause
复制代码

评分

参与人数 2技术 +2 收起 理由
pengyou86 + 1 乐于助人
Batcher + 1 乐于助人

查看全部评分

发表于 2014-4-22 17:56:52 | 显示全部楼层
  1. @echo off
  2. %1 cmd /v /c %0 :
  3. (for /f "delims=" %%a in (一.txt) do (
  4.    set /a "1/(n=^!n)"||echo !str!    %%a
  5.    set "str=%%a"
  6. ))>二.txt 2>nul
  7. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2014-4-22 21:32:10 | 显示全部楼层
谢谢各位老大,但我测试你们的批处理没有一个能使用的。提示图片中这种情况。
我电脑是XP系统
发表于 2014-4-22 21:34:14 | 显示全部楼层
回复 7# pengyou86


    用记事本打开bat,文件,另存为,看看编码是不是ANSI
 楼主| 发表于 2014-4-22 21:36:41 | 显示全部楼层
回复 8# DAIC


    是ANSI 格式的
发表于 2014-4-22 21:46:53 | 显示全部楼层
回复 9# pengyou86


    txt文件也是ANSI编码吗?
 楼主| 发表于 2014-4-22 21:57:07 | 显示全部楼层
回复 10# DAIC

是的txt文本也是ANSI
 楼主| 发表于 2014-4-22 22:03:11 | 显示全部楼层
回复 10# DAIC
发表于 2014-4-22 22:10:03 | 显示全部楼层
7楼那个截图是测试的哪个代码?
 楼主| 发表于 2014-4-22 22:12:01 | 显示全部楼层
回复 13# DAIC


    @echo off
for /f "delims=U" %%i in ('cmd /u /c echo 唉') do set "tab=%%i"
setlocal enabledelayedexpansion
(for /f "delims=" %%i in (a.txt) do (
    if defined str (
       echo,!str!%tab%%%i&set "str="
    ) else set "str=%%i"
)
    if defined str echo !str!
)>处理后.txt
pause
发表于 2014-4-22 23:15:15 | 显示全部楼层
回复 7# pengyou86


    本机测试无误,你存的 bat 是 ansi 吗?看错误提示截图,感觉应该是存成 utf-8 了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 01:34 , Processed in 0.021915 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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