标题: [文本处理] 请帮忙,批处理把文本内的逗号替换成换行符 [打印本页]
作者: lhbxyc 时间: 2018-9-12 01:02 标题: 请帮忙,批处理把文本内的逗号替换成换行符
http://www.bathome.net/thread-19751-1-1.html
搜索到这个帖子,下面这个bat代码可以生成一个新的txt,但是生成新的文件最后有一行空行,请大神帮忙写个生成后,是没有最后一行空行的- @echo off
- setlocal enabledelayedexpansion
- for /f %%h in ('copy /z %0 nul') do set crlf=%%h^
-
-
- (for %%h in ("!crlf!") do (
- for /f "delims=" %%b in (1.txt) do (
- endlocal
- set "str=%%b"
- setlocal enabledelayedexpansion
- echo !str:,=%%~h!
- )
- ))>2.txt
- pause
复制代码
作者: WHY 时间: 2018-9-12 11:31
本帖最后由 WHY 于 2018-9-12 13:21 编辑
- @echo off
- setlocal enabledelayedexpansion
- for /f %%h in ('copy /z %0 nul') do set crlf=%%h^
-
-
- for %%h in ("!crlf!") do (
- endlocal
- for /f "delims=" %%b in (1.txt) do (
- if defined s2 (
- setlocal enabledelayedexpansion
- echo;!s2:,=%%~h!
- endlocal
- )
- set "s2=%%b"
- )
- if defined s2 (
- setlocal enabledelayedexpansion
- set /p "=!s2:,=%%~h!" < nul
- endlocal
- )
- )
- pause
复制代码
作者: lhbxyc 时间: 2018-9-12 18:26
非常感谢,就是没有输入法状态 英文的逗号,可以用很完美,比如逗号是输入法下的,这种【,】逗号请问可以么?
作者: Batcher 时间: 2018-9-13 09:43
- sed "s/[,,]/\n/g" 1.txt > 2.txt
复制代码
作者: Batcher 时间: 2018-9-13 09:49
- @echo off
- setlocal enabledelayedexpansion
- for /f %%h in ('copy /z %0 nul') do set crlf=%%h^
-
-
- (for %%h in ("!crlf!") do (
- endlocal
- for /f "delims=" %%b in (1.txt) do (
- if defined s2 (
- setlocal enabledelayedexpansion
- set "s2=!s2:,=%%~h!"
- set "s2=!s2:,=%%~h!"
- echo,!s2!
- endlocal
- )
- set "s2=%%b"
- )
- if defined s2 (
- setlocal enabledelayedexpansion
- set "s2=!s2:,=%%~h!"
- set "s2=!s2:,=%%~h!"
- set /p "=!s2!" < nul
- endlocal
- )
- ))>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 - @echo off
- setlocal enabledelayedexpansion
- for /f %%h in ('copy /z %0 nul') do set crlf=%%h^
-
-
- (for %%h in ("!crlf!") do (
- endlocal
- for /f "delims=" %%b in ('type "C:\test\1.txt"') do (
- if defined s2 (
- setlocal enabledelayedexpansion
- set "s2=!s2:,=%%~h!"
- set "s2=!s2:,=%%~h!"
- echo,!s2!
- endlocal
- )
- set "s2=%%b"
- )
- if defined s2 (
- setlocal enabledelayedexpansion
- set "s2=!s2:,=%%~h!"
- set "s2=!s2:,=%%~h!"
- set /p "=!s2!" < nul
- endlocal
- )
- ))>"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://bathome.net./) |
Powered by Discuz! 7.2 |