Board logo

标题: [文本处理] 请帮忙,批处理把文本内的逗号替换成换行符 [打印本页]

作者: lhbxyc    时间: 2018-9-12 01:02     标题: 请帮忙,批处理把文本内的逗号替换成换行符

http://www.bathome.net/thread-19751-1-1.html
搜索到这个帖子,下面这个bat代码可以生成一个新的txt,但是生成新的文件最后有一行空行,请大神帮忙写个生成后,是没有最后一行空行的
  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
复制代码

作者: WHY    时间: 2018-9-12 11:31

本帖最后由 WHY 于 2018-9-12 13:21 编辑
  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.     endlocal
  6.     for /f "delims=" %%b in (1.txt) do (
  7.         if defined s2 (
  8.             setlocal enabledelayedexpansion
  9.             echo;!s2:,=%%~h!
  10.             endlocal
  11.         )
  12.         set "s2=%%b"
  13.     )
  14.     if defined s2 (
  15.         setlocal enabledelayedexpansion
  16.         set /p "=!s2:,=%%~h!" < nul
  17.         endlocal
  18.     )
  19. )
  20. pause
复制代码

作者: lhbxyc    时间: 2018-9-12 18:26

非常感谢,就是没有输入法状态 英文的逗号,可以用很完美,比如逗号是输入法下的,这种【,】逗号请问可以么?
作者: Batcher    时间: 2018-9-13 09:43

  1. sed "s/[,,]/\n/g" 1.txt > 2.txt
复制代码

作者: Batcher    时间: 2018-9-13 09:49

  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.     endlocal
  6.     for /f "delims=" %%b in (1.txt) do (
  7.         if defined s2 (
  8.             setlocal enabledelayedexpansion
  9.             set "s2=!s2:,=%%~h!"
  10.             set "s2=!s2:,=%%~h!"
  11.             echo,!s2!
  12.             endlocal
  13.         )
  14.         set "s2=%%b"
  15.     )
  16.     if defined s2 (
  17.         setlocal enabledelayedexpansion
  18.         set "s2=!s2:,=%%~h!"
  19.         set "s2=!s2:,=%%~h!"
  20.         set /p "=!s2!" < nul
  21.         endlocal
  22.     )
  23. ))>2.txt
复制代码

作者: lhbxyc    时间: 2018-9-15 16:26

回复 5# Batcher


   也是非常感谢管理员,再使用中,通过程序运行这个bat,就会出现目录找不到,如果是双击点开bat倒是可以,这个请问是否可以改成,bat的1.txt,是在指定的目录下,切割好后也自动在这个目录生成2.txt,就是和现在相比指定一个路径呢?避免出错
作者: lhbxyc    时间: 2018-9-15 16:27

路径可以是随意的,比如D:\新建文件夹 (5)\内容
作者: Batcher    时间: 2018-9-15 19:30

回复 6# lhbxyc
  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.     endlocal
  6.     for /f "delims=" %%b in ('type "C:\test\1.txt"') do (
  7.         if defined s2 (
  8.             setlocal enabledelayedexpansion
  9.             set "s2=!s2:,=%%~h!"
  10.             set "s2=!s2:,=%%~h!"
  11.             echo,!s2!
  12.             endlocal
  13.         )
  14.         set "s2=%%b"
  15.     )
  16.     if defined s2 (
  17.         setlocal enabledelayedexpansion
  18.         set "s2=!s2:,=%%~h!"
  19.         set "s2=!s2:,=%%~h!"
  20.         set /p "=!s2!" < nul
  21.         endlocal
  22.     )
  23. ))>"C:\test\2.txt"
复制代码

作者: lhbxyc    时间: 2018-9-16 12:30

回复 8# Batcher


   好像加了路径之后,生成的文件就是0kb了,不能分割了,以为是路径名字的原因,试过还是不行呢
作者: Batcher    时间: 2018-9-16 14:04

回复 9# lhbxyc


    8楼代码少了一个单引号,已更新,你再试试。
作者: lhbxyc    时间: 2018-9-16 14:12

回复 10# Batcher


    很完美,非常谢谢老大  最好的论坛没有之一




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