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

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

想让批处理实现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
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

把多行文本拼接成用连接的一行 ,楼主可以参考如下代码。
方法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

评分人数

TOP

  1. gawk "{printf (NR%2)?$0 :$0\"\n\"}" a.txt > b.txt
复制代码
2

评分人数

TOP

  1. sed "$!N;s/\n/ /" a.txt > b.txt
复制代码
1

评分人数

TOP

回复 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

评分人数

TOP

  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

评分人数

TOP

谢谢各位老大,但我测试你们的批处理没有一个能使用的。提示图片中这种情况。
我电脑是XP系统

TOP

回复 7# pengyou86


    用记事本打开bat,文件,另存为,看看编码是不是ANSI

TOP

回复 8# DAIC


    是ANSI 格式的

TOP

回复 9# pengyou86


    txt文件也是ANSI编码吗?

TOP

回复 10# DAIC

是的txt文本也是ANSI

TOP

回复 10# DAIC

TOP

7楼那个截图是测试的哪个代码?

TOP

回复 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

TOP

回复 7# pengyou86


    本机测试无误,你存的 bat 是 ansi 吗?看错误提示截图,感觉应该是存成 utf-8 了

TOP

返回列表