Board logo

标题: [文本处理] [已解决]批处理如何把多行文本合并为一行? [打印本页]

作者: 狗屁不通    时间: 2012-8-13 19:03     标题: [已解决]批处理如何把多行文本合并为一行?

本帖最后由 狗屁不通 于 2012-8-14 12:27 编辑

10:18
我有一个问题。。。_百度知道
10:19
雅虎雅虎雅虎
10:20
奥运会怎么不让我参加?
10:21
bathome我爱你

如何把第二行放到第一行后边?就是变成:
10:18我有一个问题。。。_百度知道
10:19雅虎雅虎雅虎
10:20奥运会怎么不让我参加?
10:21bathome我爱你

在下左想右想上想下想,什么都想不出来。。。还望赐教!
作者: apang    时间: 2012-8-13 22:10

本帖最后由 apang 于 2012-8-13 22:37 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "delims=" %%a in (1.txt) do (
  3.   if defined a echo,!a! %%a
  4.   set/a n+=1,m=n%%2
  5.   if "!m!"=="0" (set a=) else set "a=%%a"
  6. ))>2.txt
复制代码

作者: 狗屁不通    时间: 2012-8-14 00:38

本帖最后由 狗屁不通 于 2012-8-14 00:41 编辑

回复 2# apang


    感谢!
我还想请教一个问题:代码第三行。if defined a echo,!a! %%a,  我认真看了http://www.bathome.net/thread-2050-1-1.html,还是非常不明白
还望指教^-^
作者: apang    时间: 2012-8-14 09:06

  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "delims=" %%a in (1.txt) do (
  3.   if defined a echo,!a! %%a
  4.   Rem 若定义了变量a,显示变量a及%%a的值
  5.   set/a n+=1,m=n%%2
  6.   Rem 变量n每循环一次自加1,变量m是求n的模(也就是奇偶判断)
  7.   if "!m!"=="0" (set a=) else set "a=%%a"
  8.   Rem 如若偶数行,将变量a赋空值;奇数行,将%%a的值赋给变量a
  9. ))>2.txt
复制代码
第一次for循环,变量a没有定义,if defined条件为假,echo,!a! %%a不被执行。此时变量n的值为1,m为1,最后赋给变量a的值为10:18
第二次for循环,if defined条件为真,执行echo,!a! %%a(a值为10:18,%%a为"我有一个问题。。。_百度知道"),此时变量n的值为2,m为0,最后赋给a的值为空。
第三次、第4次...以此类推。
作者: 狗屁不通    时间: 2012-8-14 12:23

回复 4# apang


    哈哈,再次感谢!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2