Board logo

标题: [文本处理] [已解决]按列换行输出的批处理文件有何错误? [打印本页]

作者: wwwjjjxxx    时间: 2011-12-29 18:19     标题: [已解决]按列换行输出的批处理文件有何错误?

本帖最后由 wwwjjjxxx 于 2011-12-31 22:07 编辑

本人想将一个TXT文本的内容转换一下,原文件格式如下:
11223344#2345#abcdef
34567#qwert#sdfreygfjh
.....................
共有几百万行转换成如下格式:
11223344
2345
abcdef
34567
qwert
sdfreygfjh
批处理代码如下:
  1. @echo off>b.txt
  2. for /f "delims=" %%i in (a.txt)do set h=%%i&call :x
  3. start notepad b.txt&exit
  4. :x
  5. set h=%h:#=;%
  6. call :y %h%
  7. :y
  8. if "%~1"=="" goto :eof
  9. echo.%~1>>b.txt
  10. shift&goto y
复制代码
不知为何只执行很少一部分就出错终止,显示为"‘n’不是内部和外部命令..."等提示,请各位老大帮忙看一下那里出问题了。先谢谢了!
作者: awk    时间: 2011-12-29 19:25

  1. sed "s/#/\n/g" a.txt >b.txt
复制代码

作者: wwwjjjxxx    时间: 2011-12-30 00:29

回复 2# awk
还是不行啊,能给一个完整的吗?
作者: awk    时间: 2011-12-30 08:53

回复 3# wwwjjjxxx


已经很完整了
有什么报错信息吗?
作者: wwwjjjxxx    时间: 2011-12-30 10:45

回复 4# awk
只是建立b文本文件并打开,其他没任何操作
作者: awk    时间: 2011-12-30 10:51

回复 5# wwwjjjxxx


正常来说,这句代码是不会打开b.txt的。

你的sed版本是什么?
你的a.txt是什么编码格式?
你是怎样运行这句代码的?
作者: wwwjjjxxx    时间: 2011-12-30 11:07

回复 6# awk
大哥见笑了,我对这方面不太懂,我只是想在WIN7环境下以批处理的形式运行,不知能解决不
作者: wwwjjjxxx    时间: 2011-12-30 11:11

回复 6# awk
文件编码是ANSI
作者: awk    时间: 2011-12-30 11:21

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f "delims=" %%a in (a.txt) do (
  4.     set "str=%%a"
  5.     set str=!str:#=^
  6. !
  7.     echo,!str!
  8. ))>b.txt
复制代码

作者: wwwjjjxxx    时间: 2011-12-30 11:34

回复 9# awk
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f "delims=" %%a in (a.txt) do (
  4.     set "str=%%a"
  5.     set str=!str:#=^!
  6.     echo,!str!
  7. ))>b.txt
复制代码
这样结果只是去掉了“#”并未换行
作者: awk    时间: 2011-12-30 12:17

回复 10# wwwjjjxxx


如果你还没看懂9楼的代码,请不要乱修改,直接点击“复制代码”就行了。
作者: wwwjjjxxx    时间: 2011-12-30 12:31

回复 11# awk
如果原封不动执行会产生如下结果
str:#=
str:#=
..........
作者: awk    时间: 2011-12-30 14:30

回复 12# wwwjjjxxx


我上传一个现成的,你试试。
作者: wwwjjjxxx    时间: 2011-12-30 14:46

回复 13# awk
只是去掉了#未换行
内有一测试文件,您可以试一下
作者: awk    时间: 2011-12-30 15:56

试试这个:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f "delims=" %%a in (a.txt) do (
  4.     set "str=%%a"
  5.     set str=!str:#=^
  6. !
  7.     echo,!str!
  8. ))>b_tmp.txt
  9. more b_tmp.txt >b.txt
复制代码

作者: wwwjjjxxx    时间: 2011-12-30 16:55

回复 15# awk
临时文件b_tmp.txt生成正常,目标文件b.txt只生成972k就结束了,还有能把每行前面的空格去掉吗
作者: wwwjjjxxx    时间: 2011-12-31 10:17

回复 15# awk

问题无法解决吗?
作者: wwwjjjxxx    时间: 2011-12-31 11:33

回复 15# awk
这个问题算是解决了!多谢awk 老师!!其实是我不会用,只要不停按任意键换页就可以了!




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