[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
呵呵我来个可以查询整个文本的。
可以找出出现在文本的哪行且在该行的位置。
太多变量了。有点乱。呵呵。欢迎测试!
  1. @echo off&setlocal enabledelayedexpansion
  2. set /p sStrQ=请输入你想查的字符串:
  3. set iNum=0
  4. set "StrQ=!sStrQ!*"
  5. call :GetNum
  6. set Line=0
  7. for /f "delims=" %%i in ('findstr /n .* 1.txt') do (
  8. set /a Line=!Line!+1
  9. set sStrL=%%i
  10. set sStrL1=!sStrL:%sStrQ%=!
  11. if not "!sStrL1!"=="!sStrL!" (
  12. set sStrLp=!sStrL:%sStrQ%=#!
  13. set iPnum=1
  14. call :GetPosition
  15. call :Echo
  16. )
  17. )
  18. :GetNum
  19. set sStr=!StrQ:~0,1!
  20. set StrQ=!StrQ:~1!
  21. if not "!sStr!"=="*" (set /a iNum=!iNum!+1) else (goto :eof)
  22. goto :GetNum
  23. :GetPosition
  24. set sStrLp1=!sStrLp:~0,1!
  25. set sStrLp=!sStrLp:~1!
  26. if not "!sStrLp1!"=="#" (set /a iPnum=!iPnum!+1) else (goto :eof)
  27. goto :GetPosition
  28. :Echo
  29. echo 此字符串出现在第!Line!行第!iPnum!位置.
  30. echo\&echo\
  31. set EndL=iPnum!+!iNum!
  32. echo 此字符串结束在!EndL!位置
  33. echo\&echo\
  34. echo 任意键继续
  35. pause>nul
  36. goto :eof
复制代码
2

评分人数

ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

TOP

原帖由 youxi01 于 2007-12-26 23:15 发表
代码过于复杂
观察你的代码,似乎先要取得 查找字符的长度等信息,其实还有很多好办法的
既然学会在这里做标记,那就在这里继续动脑筋:set "StrQ=!sStrQ!*",可以大大压缩代码的

还有个建议:用来做标记的文件 ...

是不是set "StrQ=_!sStrQ!_" 然后可以怎么简洁?
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

TOP

返回列表