永发信息网

批处理寻找字符

答案:4  悬赏:80  手机版
解决时间 2021-05-06 08:47
  • 提问者网友:我是我
  • 2021-05-05 19:29

RT

在批处理程序当前目录下,有一个63.txt

要求用户输入字符,然后程序在63.txt中搜寻,找到后将该行及后面两行显示出来

如果未找到,则跳转至标签":X"去,":X"下暂时写上pause命令,我还要自己改— —。

最佳答案
  • 五星知识达人网友:舊物识亽
  • 2021-05-05 20:39

貌似可以,不过很难。我现在没有时间,只能给你个简单的思路……


显然,用find命令效率很高,不过要显示出目标及其后面的行可能做不到。


所以我有个笨办法:


  用for循环一行一行的读取63.txt中的文字,每读取一行作以下处理:


     首先将读取出来的行中的符合用户输入字符的内容(整体)替换掉(比如替换为空),然后再与替换前比较。


如果比较结果相同,则说明没有被替换的内容,也就是所这一行不是用户查找的目标。


如果比较发现替换后于原来不一样了,则说明此行包括用户搜索的内容,符合条件,接下来,你可以继续搜索符合条件的行,或者结束搜索并将当前行及下两行显示出来……

全部回答
  • 1楼网友:青尢
  • 2021-05-06 00:47

第一位朋友的思路不错,可惜没说怎么显示目标行的下两行。

第二位朋友看都不用看,goto :x,连:x标签都没有。

第三位朋友的代码的确比较长,没有明显错误,但测试后只会显示最后一个目标行的后两行,前面所有目标行的后两行都不显示。

  • 2楼网友:青尢
  • 2021-05-05 23:15

@echo off setlocal enabledelayedexpansion set a=0 for /f "delims=" %%i in (1.txt) do (     set /a a+=1     echo !a!.%%i>>2.txt ) set a= set b= for /f "delims=" %%i in (2.txt) do (     set a=%%i     set b=%%i     set a=!a:要查找的字符=!     if "!a!"=="!b!" (    echo !a!) else (    echo !b!>>3.txt     ) ) set a= set b= for /f "delims=." %%i in (3.txt) do (     set a=%%i     set /a b=a+1     set /a c=a+2 ) for /f "tokens=1,2* delims=." %%i in (2.txt) do (     set e=%%i     set f=%%i.%%j     if "!e!"=="!b!" (    echo !f!>>3.txt     )     if "!e!"=="!c!" (    echo !f!>>3.txt     ) )

代码有点长,不过可以解决问题的。楼主看下,,,,

补充一下,1.txt是存放要处理的文本。3.txt是输出的文本。

  • 3楼网友:枭雄戏美人
  • 2021-05-05 22:08

脚本产生临时文件“%temp%\0.tmp”,提取的指定行保存在里面(清理垃圾文件可以清理掉)。楼主可以自行测试一下

@echo off set path="63.txt" rem 这里需要设置完整路径 set re=%temp%\0.tmp

set /p str=输入字符:

echo.>%re% setlocal ENABLEDELAYEDEXPANSION for /f "tokens=1 delims=:" %%l in ('findstr /n "%str%" %path%') do (    set /a s=%%l+1    set /a n=%%l+2    call :skip    echo.>>%re%)

findstr "%str%" %re%||(cls&echo 跳到标签X&pause&goto :x) cls&type %re%&pause

:skip for /f "tokens=1,* delims=:" %%i in ('findstr /n . %path%') do (    if %%i==%%l echo %%j >>%re%    if %%i==%s% echo %%j >>%re%    if %%i==%n% echo %%j >>%re%)

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯