[英]How can I write a new line of text to a file once a specific line of text has been found?
[英]How can I compare and specific line of a text file?
例
(
Line1: echo echo example
Line2: echo echo example
Line3: echo echo example
Line4: echo echo File Example
) > File1.txt
(
Line1: echo echo example
Line2: echo echo example
Line3: echo echo File
Line4: echo echo File
) > File2.txt
想要比较Line4是否相等,但丢弃其他行。 在这种情况下返回false
您可以使用数组来比较这种类型的文件:
@echo off
(
echo Line1:example
echo Line2:example
echo Line3:example
echo Line4:File
)> File1.txt
(
echo Line1:example
echo Line2:example
echo Line3:File
echo Line4:example
)> File2.txt
setlocal enabledelayedexpansion
set i=0
for /f "tokens=* delims=" %%a in ('Type "File1.txt"') do (
set /a i+=1
set File1_Line[!i!]=%%a
)
set File1_Line[4]
pause
::********************************************************
set i=0
for /f "tokens=* delims=" %%a in ('Type "File2.txt"') do (
set /a i+=1
set File2_Line[!i!]=%%a
)
set File2_Line[4]
pause
::********************************************************
echo File1_Line[4]" = !File1_Line[4]!"
pause
echo File2_Line[4] = "!File2_Line[4]!"
pause
::********************************************************
IF /I "!File1_Line[4]!" equ "!File2_Line[4]!" ( echo TRUE
) else (
echo False
)
pause
@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "filename1=%sourcedir%\q36252686.txt"
SET "filename2=%sourcedir%\q36252686_2.txt"
:: This part simply establishes the data IN the files
FOR %%a IN ("%filename1%" "%filename2%") DO DEL %%a 2>nul
FOR %%a IN (
"Line1: echo echo example"
"Line2: echo echo example"
"Line3: echo echo example"
"Line4: echo echo File Example"
) DO >> "%filename1%" ECHO(%%~a
FOR %%a IN (
"Line1: echo echo example"
"Line2: echo echo example"
"Line3: echo echo File"
"Line4: echo echo File"
) DO >> "%filename2%" ECHO(%%~a
:: line to match
SET /a matchonline=4
:: lines to skip
SET /a skiplines=matchonline-1
SET "skiplines=skip=%skiplines%"
IF %matchonline%==1 SET "skiplines="
FOR /f "usebackq%skiplines%delims=" %%a IN ("%filename1%") DO (
FOR /f "usebackq%skiplines%delims=" %%b IN ("%filename2%") DO (
IF "%%a"=="%%b" (SET "result=true") ELSE (SET "result=false")
GOTO done
)
)
:done
ECHO match ON line %matchonline%=%result%
GOTO :EOF
您需要更改filename1
和filename2
的设置以适合您的具体情况。 我在您的系统上将您的数据生成为方便的文件名以进行测试。
读取第一个文件,跳过匹配前的行,并将其内容分配给%%a
。 当发生这种情况时,重复第二个文件,到%%b
设置结果并突破循环。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.