批处理文件查找字符串并提供关闭它的行号

时间:2013-12-20 00:35:58

标签: batch-file

我正在尝试编译批处理文件以搜索txt文件上的字符串,并在找到时给出行号并将其放入变量,以便我可以在语句中使用它

例如

name.txt

carolina
rita
sara
andre

在上面的例子中我想找到%username%= Andre然后如果%username%不在列表中那么返回一个变量4,我知道它的名字是“Hello” 因为“andre”在第4行

我发现了一个代码,但是很难将其添加到功能

    @echo off &setlocal
set "search=%username%"
set "replace=kordo anstataui"
set "textfile=name.txt"
set "newfile=new.txt"

(for /f "delims=" %%i in ('findstr /n "^" "%textfile%"') do (
    set "line=%%i"
    setlocal enabledelayedexpansion
    set "line=!line:%search%=%replace%!"
    echo(!line!
    endlocal
))>"%newfile%"

type "%newfile%"

我希望它有助于代码帮助

Ps:抱歉我的写作不好

3 个答案:

答案 0 :(得分:4)

您找到了FINDSTR命令。嗯,我想知道它会做什么......

for /f "delims=:" %%N in ('findstr /i /x /n andre "%textfile%"') do set line=%%N

从命令提示符处使用help findstrfindstr /?以获取帮助。有关标准帮助中未提供的其他信息,请参阅What are the undocumented features and limitations of the Windows FINDSTR command?

答案 1 :(得分:0)

此代码给出了包含andre的所有行,并将包含匹配项的最后一行存储在变量中:

for /f "tokens=1* delims=][" %i in ('find /n "andre" ^< name.txt') do echo Hello %j, you are in line %i & set line=%i

答案 2 :(得分:-1)

我非常简单地使用它。

FOR /F "delims=: tokens=1*" %i in ('findstr /N /I "String2Find" "file2read.log"') do ( set VARIABLE=%i )
echo %VARIABLE%