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

[文本处理] 请帮忙,批处理把文本内的逗号替换成换行符

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
复制代码

回复 10# Batcher


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

TOP

回复 9# lhbxyc


    8楼代码少了一个单引号,已更新,你再试试。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 8# Batcher


   好像加了路径之后,生成的文件就是0kb了,不能分割了,以为是路径名字的原因,试过还是不行呢

TOP

回复 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"
复制代码
1

评分人数

    • CrLf: 乐于助人技术 + 1
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

路径可以是随意的,比如D:\新建文件夹 (5)\内容

TOP

回复 5# Batcher


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

TOP

  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
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  1. sed "s/[,,]/\n/g" 1.txt > 2.txt
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

非常感谢,就是没有输入法状态 英文的逗号,可以用很完美,比如逗号是输入法下的,这种【,】逗号请问可以么?

TOP

本帖最后由 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
复制代码

TOP

返回列表