Board logo

标题: [文本处理] [已解决]批处理如何实现多行变一行? [打印本页]

作者: wangdao6699    时间: 2015-4-12 14:43     标题: [已解决]批处理如何实现多行变一行?

本帖最后由 wangdao6699 于 2015-4-12 18:33 编辑

记事本内容如:

110:18
aaannnb

60:20

333369888
bat236




252.36.85
04 7A 68 65 6E 90 00


结果:

N行变成一行,以 | 作为分隔符

110:18|aaannnb|60:20|333369888|bat236|252.36.85|04 7A 68 65 6E 90 00
作者: bailong360    时间: 2015-4-12 15:02

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f "useback delims=" %%i in ("Your.txt") do <nul set /p=!str!&set "str=%%i|"
  4. <nul set /p=!str:~0,-1!)>$New.txt
复制代码

作者: wangdao6699    时间: 2015-4-12 16:44

回复 2# bailong360


    测试了一组出现结果竟是:36.93 |36.94 |36.98 |36.99|36.103
分隔符  |  前有空格

测试数据:


36.93
36.94
36.98
36.99
36.103
作者: 522235677    时间: 2015-4-12 18:04

回复 3# wangdao6699
  1.     @echo off & setlocal enabledelayedexpansion
  2. (for /f "delims=" %%a in (1.txt) do (
  3. if not "!str!"=="" <nul set /p=^|
  4. set str=%%a
  5. <nul set /p=!str: =!
  6. ))>new.txt
  7. pause
复制代码
你的文本本来带有空格的
作者: wangdao6699    时间: 2015-4-12 18:30

本帖最后由 wangdao6699 于 2015-4-12 18:32 编辑

回复 2# bailong360


    代码不错
作者: pcl_test    时间: 2015-4-12 18:35

来个VBS
  1. Dim fso,File1,File2
  2. Set fso = CreateObject("Scripting.FileSystemObject")
  3. Set File1= fso.OpenTextFile(".\测试.txt", 1 , True)
  4. Set File2 = fso.CreateTextFile(".\结果.txt", 2 ,True)  
  5. Do While File1.AtEndOfStream <> True
  6.     strtmp = Trim(File1.ReadLine)
  7.     If Len(strtmp) > 0 Then str=str&strtmp&"|"
  8. loop
  9.     File2.Write Left(str,Len(str)-1)
  10.     File1.Close
  11.     File2.Close
  12. MsgBox "完成!"
复制代码

作者: wangdao6699    时间: 2015-4-12 19:21

回复 6# pcl_test


    感谢您分享,代码有效,学习了




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