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

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

本帖最后由 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陌
朗里格郎
池塘涟漪
阿南哥哥


  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

评分人数

    • Topgunguy: 原来换行符是^ 学习了技术 + 1

TOP

即然如此,我就给出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"就是"代码"
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

回复 2# Demon


   为什么处理后用记事本打开看不到效果,而用写字板却可以

TOP

回复 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

评分人数

TOP

本帖最后由 wc726842270 于 2012-10-25 04:59 编辑

回复 5# CrLf


    真想到ZM /Z的用法都了解了,不过ENDLOCAL放在前面还是有些不谐调(我还以为忘了写了呢)COPY /Z %0 NUL 很有技术性
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

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

TOP

  1. gawk "gsub(/,/,\"\n\")" a.txt >b.txt
复制代码

TOP

回复 6# wc726842270


    这个不是我发现的,得膜拜“怕老婆”兄:http://bbs.bathome.net/thread-12347-1-1.html

TOP

老大,for /f %%h in ('copy /z %0 nul') do set crlf=%%h^是啥意思?还有就是,enlocal有何用?5# CrLf

TOP

回复 10# wangxiaodong


endlocal的作用:
http://bbs.bathome.net/thread-1224-1-1.html

TOP

标题

endlocal懂了,但'copy /z %0 和set crlf=%%h^不懂。好像copy没有/z参数啊nul'11# DAIC

TOP

回复 12# wangxiaodong


  /Z           用可重新启动模式复制已联网的文件。

TOP

本帖最后由 wangxiaodong 于 2014-4-4 22:23 编辑

谢谢,就是不知道为啥要用for /f %%h in ('copy /z %0 nul') do set crlf=%%h^构造换行符5楼和2楼有什么不一样?13# DAIC

TOP

回复 14# wangxiaodong


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

TOP

返回列表