Board logo

标题: [文本处理] 批处理怎样将一行数字变为多行数字? [打印本页]

作者: solid    时间: 2010-8-5 23:02     标题: 批处理怎样将一行数字变为多行数字?

a.txt文本中的数字如下排列:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ...
我现在想把数字作分行排列
0
1
2
3
4
...
我的想法是把一个个数字作比较,碰到空格就输出前面的数字。但是总是输出ECHO处于关闭状态,什么原因呢?代码:
  1. @echo off &setlocal EnableDelayedExpansion
  2. for /f "tokens=* delims=" %%a in ( a.txt ) do set b=%%a
  3. set d=1
  4. :abb
  5. if "%b%"=="" exit
  6. set "c=!b:~0,1!"
  7. if not "!c!" == " " set "d=!d!!c!" && set "b=!b:~1!" && goto abb
  8. set "d=%d:~1%"
  9. echo %d% >>ccc.txt
  10. set d=1
  11. goto abb
复制代码

作者: 随风    时间: 2010-8-5 23:08

  1. @echo off
  2. for /f "delims=" %%i in (a.txt) do (
  3.    for %%j in (%%i) do echo %%j
  4. )
  5. pause
复制代码

作者: solid    时间: 2010-8-5 23:17

额,老大的代码才一句,学习。
作者: cjiabing    时间: 2010-8-5 23:44

  1. @echo off
  2. set /p var=<123.txt
  3. for %%a in (%var%) do echo %%a
  4. pause
复制代码

作者: solid    时间: 2010-8-6 09:35

原帖由 cjiabing 于 2010-8-5 23:44 发表
@echo off
set /p var=


你这代码好神奇,不过有个限制。似乎只能支持总共1024个字符,超过的就无能为力了。
作者: cjiabing    时间: 2010-8-6 11:50

原帖由 solid 于 2010-8-6 09:35 发表


你这代码好神奇,不过有个限制。似乎只能支持总共1024个字符,超过的就无能为力了。


哦,忘记了,呵呵,要求不高的话还是可以用滴!~
作者: CUer    时间: 2010-8-6 12:59

  1. tr " " "\n" < 1.txt | more >2.txt
复制代码

作者: CUer    时间: 2010-8-6 13:00

  1. sed "s/ /\n/g" 1.txt >2.txt
复制代码
  1. gawk "gsub(/ /,\"\n\")" 1.txt >2.txt
复制代码

作者: ZJHJ    时间: 2010-8-10 21:47

以空格分行。
cd.>temp.txt
for /f  "delims=" %%i in (%file%) do (
  for %%a in (%%i) do echo %%a>>temp.txt
)
作者: CUer    时间: 2010-8-10 22:07

  1. xargs -n1 < 1.txt >2.txt
复制代码
  1. perl -pe "s/ /\n/g" 1.txt >2.txt
复制代码





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