我可以使用 findstr 仅在指定字节/位置之间搜索字符串吗?
例如我有一个文本文件,每行最多 1000 个字节
我只想搜索字节数介于 50 到 100 之间的字符串的行?
使用正则表达式 (regex) 可以相对容易地解决您的问题。但不幸的是,FINDSTR 对正则表达式的支持极为有限。它没有解决您的问题所需的功能。
您可以在 Windows 上使用 grep而不是 FINDSTR,但这需要下载。
假设您想my string
在“file.txt”中的任何行上找到位置 50 和 100 之间的某个位置:
grep "^.\{49,91\}my string" file.txt
另一种选择是切换到另一种完全支持正则表达式的脚本语言。JScript、VBScript 和 PowerShell 都可以用来轻松解决这个问题。
纯本机批处理解决方案需要一个重要的脚本,而且速度要慢得多。这是一种可能的解决方案:
@echo off
setlocal disableDelayedExpansion
for /f delims^=^ eol^= %%L in (file.txt) do (
set "ln=%%A"
setlocal enableDelayedExpansion
set "ln=!ln:~49,51!"
if "!ln:my string=!" neq "!ln!" echo !ln!
endlocal
)