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

[文本处理] [已解决]批处理删除文本中空行的脚本修改

  1. @echo off
  2. ::By Shilyx mailto oversleep@163.com
  3. if {%1}=={} goto :EOF
  4. :begin
  5. if {%1}=={} goto end
  6. call elBlank %1
  7. shift
  8. goto begin
  9. elBlank
  10. if not exist %1 goto :EOF
  11. echo Deleting Balnk Lines in %1
  12. echo.
  13. type %1 | findstr /V "^$" >C:\_tmp.Shilyx
  14. type C:\_tmp.Shilyx>%1
  15. goto :EOF
  16. :end
  17. if exist C:\_tmp.Shilyx del C:\_tmp.Shilyx
  18. echo Process Succeed, press any key to exit ...
  19. pause>nul
复制代码
这段脚本可以,但是稍大一点文件就会产生乱码,高手请修改一下,不胜感谢!

我晕,这么复杂,没必要改了,直接给你一个:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('type a.txt') do (
  3.      if not defined flag (echo.%%i>a.txt&set "flag=a") else (echo.%%i>>a.txt)
  4. )
  5. start a.txt
复制代码

[ 本帖最后由 batman 于 2008-7-29 20:55 编辑 ]
***共同提高***

TOP

  要想兼容所有特殊情况(行首是分号、冒号、行内带感叹号、&、>、|……最后两个字符为空格+0~9),还是需要用这个代码:
  1. @echo off
  2. cd.>reslut.txt
  3. for /f "delims=" %%i in ('findstr /n .* test.txt') do (
  4.     set "str=%%i"
  5.     setlocal enabledelayedexpansion
  6.     set "str=!str:*:=!"
  7.     if defined str (echo.!str!)>>reslut.txt
  8.     endlocal
  9. )
  10. start reslut.txt
复制代码
1

评分人数

尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

原帖由 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,学习了。
***共同提高***

TOP

好像有点不行啊!

对于第一行有空行的文本,处理起来不行啊,能不能改进呢?

TOP

删除一个文件中的空行:
  1. findstr "." "1.txt" > "2.txt"
复制代码
删除多个文件中的空行:
  1. @echo off
  2. chcp 65001
  3. for /f "delims=" %%i in ('dir /b /a-d *.txt') do (
  4.     findstr "." "%%i" > "%%i.tmp"
  5.     move /y "%%i.tmp" "%%i"
  6. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表