标题: [文本处理] [已解决]批处理删除文本中空行的脚本修改 [打印本页]
作者: yun1831 时间: 2008-7-29 20:08 标题: [已解决]批处理删除文本中空行的脚本修改
- @echo off
- ::By Shilyx mailto oversleep@163.com
- if {%1}=={} goto :EOF
-
- :begin
- if {%1}=={} goto end
- call elBlank %1
- shift
- goto begin
-
- elBlank
- if not exist %1 goto :EOF
- echo Deleting Balnk Lines in %1
- echo.
- type %1 | findstr /V "^$" >C:\_tmp.Shilyx
- type C:\_tmp.Shilyx>%1
- goto :EOF
-
- :end
- if exist C:\_tmp.Shilyx del C:\_tmp.Shilyx
- echo Process Succeed, press any key to exit ...
- pause>nul
复制代码
这段脚本可以,但是稍大一点文件就会产生乱码,高手请修改一下,不胜感谢!
作者: batman 时间: 2008-7-29 20:38
我晕,这么复杂,没必要改了,直接给你一个:- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('type a.txt') do (
- if not defined flag (echo.%%i>a.txt&set "flag=a") else (echo.%%i>>a.txt)
- )
- start a.txt
复制代码
[ 本帖最后由 batman 于 2008-7-29 20:55 编辑 ]
作者: namejm 时间: 2008-7-29 20:53
要想兼容所有特殊情况(行首是分号、冒号、行内带感叹号、&、>、|……最后两个字符为空格+0~9),还是需要用这个代码:- @echo off
- cd.>reslut.txt
- for /f "delims=" %%i in ('findstr /n .* test.txt') do (
- set "str=%%i"
- setlocal enabledelayedexpansion
- set "str=!str:*:=!"
- if defined str (echo.!str!)>>reslut.txt
- endlocal
- )
- start reslut.txt
复制代码
作者: batman 时间: 2008-7-29 21:01
原帖由 namejm 于 2008-7-29 20:53 发表
要想兼容所有特殊情况(行首是分号、冒号、行内带感叹号、&、>、|……最后两个字符为空格+0~9),还是需要用这个代码:@echo off
cd.>reslut.txt
for /f "delims=" %%i in ('findstr /n .* test.txt') do (
...
考虑的好全啊!namejm就是namejm,学习了。
作者: bakdfkuk 时间: 2009-3-5 10:50 标题: 好像有点不行啊!
对于第一行有空行的文本,处理起来不行啊,能不能改进呢?
作者: Batcher 时间: 2020-10-31 22:01
删除一个文件中的空行:- findstr "." "1.txt" > "2.txt"
复制代码
删除多个文件中的空行:- @echo off
- chcp 65001
- for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
- findstr "." "%%i" > "%%i.tmp"
- move /y "%%i.tmp" "%%i"
- )
复制代码
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |