Board logo

标题: [文本处理] [已解决]批处理怎样合并一行文本中的多个空格为一个空格? [打印本页]

作者: byz001    时间: 2012-4-1 13:18     标题: [已解决]批处理怎样合并一行文本中的多个空格为一个空格?

本帖最后由 byz001 于 2012-4-11 12:30 编辑

a b                      c 合并前
a b c                      合并后
只用批处理操作不用外部工具
那位高手解答下在线等赐教
作者: find    时间: 2012-4-1 13:30

  1. @echo off
  2. (for /f "tokens=1-3" %%a in (a.txt) do (
  3.     echo,%%a %%b %%c
  4. ))>b.txt
复制代码

作者: byz001    时间: 2012-4-1 13:53

回复 2# find


    好似b.txt输出内容为空啊
如果一行中有n个被不定数空格隔开的字符串呢又该怎么办
例如 a   b   c    d..........................
作者: byz001    时间: 2012-4-1 14:30

本帖最后由 byz001 于 2012-4-1 14:31 编辑

没有人来解答下吗,在一个文本文件中,每行有“不定数量”字符串,每两个字符串被“不定数量”空格隔开
要把不定数量空格合并为一个空格该怎么做,
作者: apang    时间: 2012-4-1 15:00

  1. @echo off
  2. for /f "delims=" %%a in (a.txt) do (
  3.   set str=
  4.   call :lp %%a
  5.   call echo,%%str:~1%%
  6. )
  7. pause&goto :eof
  8. :lp
  9. if not "%1"=="" set "str=%str% %1"&shift&goto lp
复制代码

作者: byz001    时间: 2012-4-1 15:33

回复 5# apang


    能解释下吗,没看懂
作者: apang    时间: 2012-4-1 19:17

回复 6# byz001

你不说代码可不可行,怎么解释呢?
如果不能运行,解释也没有用。
作者: find    时间: 2012-4-1 21:33

回复 3# byz001


我当时做试验的时候好似b.txt输出内容不为空啊
作者: byz001    时间: 2012-4-1 21:52

本帖最后由 byz001 于 2012-4-1 21:54 编辑

程序运行结果屏显也没有,也沒输结果到文件,也没错误提示,所以没看懂,我系统是xp
作者: byz001    时间: 2012-4-1 22:04

回复 8# find


  每一行有不定数个字符串这个方法好似不怎么方便
作者: find    时间: 2012-4-1 22:32

回复 10# byz001


是呀
希望以后有什么问题能在顶楼发帖的时候就说清楚
作者: terse    时间: 2012-4-2 02:33

本帖最后由 terse 于 2012-4-2 02:36 编辑

回复 10# byz001
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "tokens=*" %%i in (a.txt) do (
  3.     for %%j in ("%%i") do set str=!str! %%j
  4.     echo!str!&set "str="
  5. ))>b.txt
复制代码

作者: byz001    时间: 2012-4-9 11:04

回复 5# apang


    问题已解决,谢谢!




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