我正在尝试编译批处理文件以搜索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:抱歉我的写作不好
答案 0 :(得分:4)
您找到了FINDSTR命令。嗯,我想知道它会做什么......
for /f "delims=:" %%N in ('findstr /i /x /n andre "%textfile%"') do set line=%%N
从命令提示符处使用help findstr
或findstr /?
以获取帮助。有关标准帮助中未提供的其他信息,请参阅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%