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

我也来试试

我的思路跟 more 一样的,只是增加判断第一行就含有abcd时,就没有上一行;判断最后一行含有abcd时,就没有下一行。还有个前提a.txt中不能有空行的,否则就跑题了。
要求一:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set/a m=0
  4. for /f %%a in (a.txt) do (
  5. set/a n=!m!
  6. set/a m+=1
  7. set t!m!=%%a
  8. set str=%%a
  9. if "!str:~0,4!"=="abcd" (
  10. if !n!==0 (call echo 上  一  行:没有上一行) else (call echo 上  一  行:%%t!n!%%)
  11. echo abcd开头行:%%a
  12. echo.))
  13. pause
复制代码

要求二
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set/a m=0
  4. for /f %%a in (a.txt) do (set/a m+=1&set t!m!=%%a)
  5. for /l %%b in (1 1 !m!) do (
  6. set/a a=%%b-1&set/a b=%%b+1
  7. call set str=!t%%b!
  8. if "!str:~0,4!"=="abcd" (
  9.   if !a!==0 (call echo 上  一  行:没有上一行) else (call echo 上  一  行:%%t!a!%%)
  10.   call echo abcd开头行:%%t%%b%%
  11.   if !b! gtr !m! (call echo 下  一  行:没有下一行) else (call echo 下  一  行:%%t!b!%%)
  12.   echo.))
  13. pause
复制代码


[ 本帖最后由 sjzong 于 2009-5-2 16:49 编辑 ]

TOP

re 9楼 和14楼

9楼:disuo兄的代码,的确厉害用一个for就可以实现了!!佩服!其中代码中的第7行中的“!a1”,应该改为“!a1!”。
14楼:keen兄的思路还是值得学习的,但是这个代码中的 findstr /n "abcd" a.txt' 显示的是a.txt所有还有abcd的行,跟本题题意以abcd开头有点偏差了!!

[ 本帖最后由 sjzong 于 2009-5-2 17:40 编辑 ]

TOP

返回列表