[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理如何输出换行符到文件?

问题:从一个现有的文件a复制数据到另一个文件b,当a文件中的数据中存在换行符的时候,如何将该数据原样的复制到b文件。我现在试过了多种方法都不成功,总是将原本含有换行符得一行数据复制成了两行,就是说换行了。

例如:
原数据是这样的:

"aaa","111111111","我是中国人。你也是","1","533a ","0","   ","0","--"

注意在“我是中国人。”句号后面有个换行符,我写不出来。
拷贝后的数据就成了这样的:

"aaa","111111111","我是中国人。
你也是","1","533a ","0","   ","0","--"

大家应该能看明白,就是换行符被执行了,而不是被保存了。这样一条数据变成了2条,错误是必然的。
之所以不直接复制文本是因为还有别的字符编辑。我这里把源问题说明吧。

原文件有这样的这样数据,很复杂有汉字,有数字也有标点符号,甚至有回车符。
现在的需求是需要把纯粹数字的数据去掉引号,空字符串也去掉引号。其他的保留引号,然后作为导入数据库的数据文件。

"aaa","111111111 ","我是中国人。你也是","1","533a ","0","   ","0","--","","     "," 天涯 "

我的做法是读取每一行内容,判断每个字段是否为纯数字,是否为空字符来去留引号,编辑完毕输入到另一个文件保存为数据文件。
所以必须逐行读取,编辑,输出。现在所有问题都解决,唯独这个回车符我没办法。
若是能直接在原文件修改也行,不过我想不出办法。
文件模型在附件。
在database中经常有这样含有换行符的数据存储,所以该问题也算是个普遍问题。
求解诸位,一定有人遇到过这种问题吧。

“for /f ...”读取文本数据时,不管是单是换行或单是回车或回车换行,都会作为分行处理,所以,纯批是没有办法区分的,只能用其它办法转成其它符号再处理,当处理完成后再转回来。

另外,用纯批生成只含换行符,不带回车符,这里有一个办法:
先用debug生成一个只有换行符一个字符的文件:hh.txt

用以下代码可以生成hh.txt:
  1. (echo e 100 a
  2. echo r cx
  3. echo 1
  4. echo n hh.txt
  5. echo w
  6. echo q) |debug >nul
复制代码
然后用下面的方法,即可以在后面只输出一个换行符,而不是回车换行了:
set/p =[要显示的数据]<nul&type hh.txt



[ 本帖最后由 netbenton 于 2009-7-20 20:11 编辑 ]

TOP

你的代码能否贴出来看看?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

我明白了 现在我是逐行来读取 并做增删引号的操作 所有不能用这个方法  有没有一种方法能在逐行读取后 替换换行 然后输出换行 并且保证实际效果是 换行符不被执行

TOP

回复 11楼 的帖子

1、把回车换行替换成换行换行
2、把回车删除
3、把换行换行替换成回车换行
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 10楼 的帖子

\r是回车
\n是换行
/xxx/表示模式匹配
g表示全局

/xxx/g表示对整个文件进行模式匹配
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

能给我讲讲这三个步骤分别是干什么的么,我是一个业余学习批处理一个月的新手,多多关照。

TOP

谢谢Batcher
能给我说一下/\r\n/g是什么意思么  主要是/xxx/g 这两个“/“是转义符?

TOP

回复 8楼 的帖子

不用第三方也行:
  1. @echo off
  2. mshta "javascript:var fso=new ActiveXObject('Scripting.FileSystemObject');fso.OpenTextFile('C:\\1.txt',2,true).Write(fso.OpenTextFile('C:\\a.txt').ReadAll().replace(/\r\n/g, '\n\n'));close()"
  3. mshta "javascript:var fso=new ActiveXObject('Scripting.FileSystemObject');fso.OpenTextFile('C:\\2.txt',2,true).Write(fso.OpenTextFile('C:\\1.txt').ReadAll().replace(/\r/g, ''));close()"
  4. mshta "javascript:var fso=new ActiveXObject('Scripting.FileSystemObject');fso.OpenTextFile('C:\\b.txt',2,true).Write(fso.OpenTextFile('C:\\2.txt').ReadAll().replace(/\n\n/g, '\r\n'));close()"
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

不能用第三方产品
这个东西追求最基本 最简单的做法

TOP

可以考虑先把换行符删掉
  1. @echo off
  2. change a.txt /from "&H0D0A" /to "&H0D0D"
  3. change a.txt /from "&H0A" /to null
  4. change a.txt /from "&H0D0D" /to "&H0D0A"
复制代码
第三方命令行工具 change.exe 下载地址:
http://bbs.bathome.net/thread-3981-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

没人帮忙解决下么
各位管理员同志

TOP

随风 帮我看看 前面诸多问题都解决 就差这个了

TOP

回复 3楼 的帖子

能否详细介绍一下你是如何“逐条复制数据到另一个文件”的吗?为何不直接复制文件呢?
为了方便更多的人同时帮你解决问题,建议把所有的信息全部更新到顶楼。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

好的 我把文件上传上来 各位帮忙看看
再解释一下,我这个复制不是复制文本,而是逐条复制数据到另一个文件。

TOP

返回列表