当我用Notepad ++打开它时,我需要在文件中找到文本 例如,我需要找到文本“ABC”。然而,我需要的真实文本是“ABC”之后的2个数字。所以我有一个批处理文件,当我双击它时,它使用Notepad ++打开一个特定的文件。它需要找到ABC,然后直接查看它后面的2位数字并用它们填充变量。
某些文件可能包含ABC12,而其他文件可能包含ABC21等。
到目前为止我所做的就是以下内容:
%echo off
"C:\Program Files (x86)\Notepad++\notepad++.exe" %1
FIND [/I] "ABC"
它打开文件正常,但不搜索。请帮忙!
谢谢!
答案 0 :(得分:7)
这是一个非常好的问题!试试这个:
@ECHO OFF &SETLOCAL
set "LineNr="
for /f "tokens=1*delims=[]" %%a in ('^<"%~1" find /i /n "%~2"') do if not defined LineNr (
set "LineNr=%%a"
SET "Line=%%b"
)
if not defined LineNr (
set "LineNr=1"
SET "Row=1"
GOTO :launch
)
CALL SET "Right=%~2%%Line:*%~2=%%"
CALL SET "Line=%%Line:%Right%=%%"
FOR /f "delims=:" %%a in ('"(echo("%Line%"&@echo()|findstr /o $"') do SET /a Row=%%a-4
:launch
START /b CMD /c ""%ProgramFiles(x86)%\Notepad++\notepad++.exe" -n%LineNr% -c%Row% "%~1""
调用批处理:
script.bat "D:\PATH\FILE.TXT" "STRING TO SEARCH"