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

[文本处理] 批处理如何将文本内的逗号替换成换行符?

[复制链接]
发表于 2012-10-23 19:42:45 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-7-7 22:44 编辑

我的一个文本内容如下:

leoskylove, 朗里格郎, 快乐肥狼
gggmby, 阿南哥哥
yinxun506, 刘一辰007, 中山老郁, 过路385, 到处旅游, 陈龙64, 愚明, moluyi陌, 朗里格郎
池塘涟漪, 阿南哥哥, dww3418, 陈龙64, ysh116, 喜洋洋2008, 寿星老, bbg008, 老闵, sy0429, wzjmq
董玮, 晨晨乐乐
icepop
yellowstick
POP通城虎
tnt8000, 阿诺舒华辛力叻, freemores


我就是想将[,]换成换行符,处理后的文本变成:


leoskylove
朗里格郎
快乐肥狼
gggmby
阿南哥哥
yinxun506
刘一辰007
中山老郁
过路385
到处旅游
陈龙64
愚明
moluyi陌
朗里格郎
池塘涟漪
阿南哥哥


发表于 2012-10-23 20:06:47 | 显示全部楼层

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set lf=^


  4. (for /f "delims=" %%i in (1.txt) do (
  5.     set "$=%%i"
  6.     for %%a in ("!lf!") do echo !$:, =%%~a!
  7. ))>2.txt
  8. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
Topgunguy + 1 原来换行符是^ 学习了

查看全部评分

发表于 2012-10-24 05:30:47 | 显示全部楼层
即然如此,我就给出VBS的吧,不平不高,还请赏谅
PS:没有做任何的错误处理和检查

  1. Dim fso
  2. Set fso=CreateObject("scripting.filesystemobject")
  3. Set f_obj=fso.OpenTextFile("目标.txt",1)
  4. str=f_obj.ReadAll
  5. f_obj.close
  6. sarry=Split(str,", ")
  7. Set nf_obj=fso.openTextFile("new.txt",2,true)
  8. nf_obj.Write Join(sarry,vbcrlf)
  9. nf_obj.Close
  10. Set fso=nothing
复制代码
另外有个小精喜,没想到五笔的"code"就是"代码"
 楼主| 发表于 2012-10-24 13:13:12 | 显示全部楼层
回复 2# Demon


   为什么处理后用记事本打开看不到效果,而用写字板却可以
发表于 2012-10-25 03:13:43 | 显示全部楼层
回复 4# Rasm


    因为记事本认的是 回车符+换行符,小改如下:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f %%h in ('copy /z %0 nul') do set crlf=%%h^


  4. (for %%h in ("!crlf!") do (
  5.    for /f "delims=" %%b in (1.txt) do (
  6.       endlocal
  7.       set "str=%%b"
  8.       setlocal enabledelayedexpansion
  9.       echo !str:,=%%~h!
  10.    )
  11. ))>2.txt
  12. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
wc726842270 + 1 学习

查看全部评分

发表于 2012-10-25 04:43:36 | 显示全部楼层
本帖最后由 wc726842270 于 2012-10-25 04:59 编辑

回复 5# CrLf


    真想到ZM /Z的用法都了解了,不过ENDLOCAL放在前面还是有些不谐调(我还以为忘了写了呢)COPY /Z %0 NUL 很有技术性
发表于 2012-10-25 10:08:55 | 显示全部楼层
  1. sed "s/,/\n/g" a.txt >b.txt
复制代码
发表于 2012-10-25 10:10:15 | 显示全部楼层
  1. gawk "gsub(/,/,"\n")" a.txt >b.txt
复制代码
发表于 2012-10-25 15:21:20 | 显示全部楼层
回复 6# wc726842270


    这个不是我发现的,得膜拜“怕老婆”兄:http://bbs.bathome.net/thread-12347-1-1.html
发表于 2014-4-4 19:30:07 | 显示全部楼层
老大,for /f %%h in ('copy /z %0 nul') do set crlf=%%h^是啥意思?还有就是,enlocal有何用?5# CrLf
发表于 2014-4-4 20:27:07 | 显示全部楼层
回复 10# wangxiaodong


endlocal的作用:
http://bbs.bathome.net/thread-1224-1-1.html
发表于 2014-4-4 20:46:34 | 显示全部楼层

标题

endlocal懂了,但'copy /z %0 和set crlf=%%h^不懂。好像copy没有/z参数啊nul'11# DAIC
发表于 2014-4-4 21:21:01 | 显示全部楼层
回复 12# wangxiaodong


  /Z           用可重新启动模式复制已联网的文件。
发表于 2014-4-4 22:21:50 | 显示全部楼层
本帖最后由 wangxiaodong 于 2014-4-4 22:23 编辑

谢谢,就是不知道为啥要用for /f %%h in ('copy /z %0 nul') do set crlf=%%h^构造换行符5楼和2楼有什么不一样?13# DAIC
发表于 2014-4-6 23:40:46 | 显示全部楼层
回复 14# wangxiaodong


    2楼得到的是换行符,但win下某些软件(如记事本)分段时只认回车+换行,缺一不可。所以从 copy /z 的输出中获取一个回车符,拼起来就完整了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 03:38 , Processed in 0.030801 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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