[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
用批处理有个问题不懂解决,就是用delims=时,即分隔符为回车符,会将“bathome”那一段落后的空行去掉,于是无法判断是否已经段落结束了。

用VBS倒容易解决。
  1. set fso= createobject("scripting.filesystemobject")
  2. set folder= fso.getfolder(".")
  3. set files=folder.files
  4. set res=fso.opentextfile("result.txt",8,1)
  5. for each file in files
  6. if lcase(fso.getextensionname(file)) = "txt" then
  7. res.write getstr(file)
  8. res.writeline
  9. end if
  10. next
  11. function getstr(a)
  12. flag=false
  13. set t=fso.opentextfile(a)
  14. do until t.atendofstream
  15. s=t.readline
  16. if s="bathome" then
  17. flag=true
  18. end if
  19. if flag=true then
  20. if len(s)<>0 then
  21. getstr=getstr & s & vbcrlf
  22. else
  23. exit do
  24. end if
  25. end if
  26. loop
  27. end function
复制代码
静水流深...

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('dir /b *.txt') do (
  3. call :get "%%i"
  4. echo.
  5. )
  6. pause
  7. exit
  8. :get
  9. set flag=false
  10. for /f "tokens=1,2 delims=:" %%j in ('findstr /n .* %1') do (
  11. if "%%k" == "bathome" set flag=true
  12. if "!flag!" == "true" (
  13. if not "%%k" == "" (echo %%k) else goto :eof
  14. )
  15. )
复制代码
静水流深...

TOP

返回列表