找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 57838|回复: 17

[文本处理] [已解决]按列换行输出的批处理文件有何错误?

[复制链接]
发表于 2011-12-29 18:19:47 | 显示全部楼层 |阅读模式
本帖最后由 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’不是内部和外部命令..."等提示,请各位老大帮忙看一下那里出问题了。先谢谢了!

评分

参与人数 1PB +2 收起 理由
CrLf + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2011-12-29 19:25:30 | 显示全部楼层
  1. sed "s/#/\n/g" a.txt >b.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
CrLf + 1 元旦快乐

查看全部评分

 楼主| 发表于 2011-12-30 00:29:50 | 显示全部楼层
回复 2# awk
还是不行啊,能给一个完整的吗?
发表于 2011-12-30 08:53:57 | 显示全部楼层
回复 3# wwwjjjxxx


已经很完整了
有什么报错信息吗?
 楼主| 发表于 2011-12-30 10:45:59 | 显示全部楼层
回复 4# awk
只是建立b文本文件并打开,其他没任何操作
发表于 2011-12-30 10:51:56 | 显示全部楼层
回复 5# wwwjjjxxx


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

你的sed版本是什么?
你的a.txt是什么编码格式?
你是怎样运行这句代码的?
 楼主| 发表于 2011-12-30 11:07:13 | 显示全部楼层
回复 6# awk
大哥见笑了,我对这方面不太懂,我只是想在WIN7环境下以批处理的形式运行,不知能解决不
 楼主| 发表于 2011-12-30 11:11:19 | 显示全部楼层
回复 6# awk
文件编码是ANSI
发表于 2011-12-30 11:21:35 | 显示全部楼层
  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
复制代码
 楼主| 发表于 2011-12-30 11:34:03 | 显示全部楼层
回复 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
复制代码
这样结果只是去掉了“#”并未换行
发表于 2011-12-30 12:17:00 | 显示全部楼层
回复 10# wwwjjjxxx


如果你还没看懂9楼的代码,请不要乱修改,直接点击“复制代码”就行了。
 楼主| 发表于 2011-12-30 12:31:19 | 显示全部楼层
回复 11# awk
如果原封不动执行会产生如下结果
str:#=
str:#=
..........
发表于 2011-12-30 14:30:32 | 显示全部楼层
回复 12# wwwjjjxxx


我上传一个现成的,你试试。
 楼主| 发表于 2011-12-30 14:46:11 | 显示全部楼层
回复 13# awk
只是去掉了#未换行
内有一测试文件,您可以试一下
发表于 2011-12-30 15:56:41 | 显示全部楼层
试试这个:
  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
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 15:27 , Processed in 0.016912 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表