有没有一种方法可以使用findstr搜索值并返回文本文件中该值所在的行?

时间:2019-04-26 22:21:04

标签: batch-file

我想在文本文件中找到包含120多个值行的值,然后将找到该值的行设置为变量,以便我可以返回并用另一个值替换文本文件中的值

使用此行

   for /F "delims=" %%a in ('findstr /c:/-59/12/ ScreenData.txt') do set 
   var=%%a

我可以在文本(ScreenData.txt)中找到值(坐标)/-59/12 /,然后将其分配给变量(变量)。 然后,我可以回显%var%并获得输出/ -59 / 12 /,但是没有办法再用(例如字母H)替换/ -59 / 12/。

我尝试过...

   for %%g in (findstr /n "/-58/12/" ScreenData.txt) do set var=%%g

文本文档的第二行带有/ -58 / 12 /,但是输出为ScreenData.txt而不是2。

这是导致替换的代码...

   REM --- ROW a ---

   SET /A rowa1x=%xaxis%-59
   SET /A rowa1y=%yaxis%+12
   SET rowa1=/%rowa1x%/%rowa1y%/

   SET /A rowa2x=%xaxis%-58
   SET /A rowa2y=%yaxis%+12
   SET rowa2=/%rowa2x%/%rowa2y%/

   SET /A rowa60x=%xaxis%
   SET /A rowa60y=%yaxis%+12
   SET rowa60=/%rowa60x%/%rowa60y%/

   REM --- Export Values ---

   (
   echo %rowa1% 
   echo %rowa2% 
   echo %rowa60%
   ) >ScreenData.txt ---

   pause

   REM --- View Generator

   for %%g in (findstr /n "/-58/12/" ScreenData.txt) do set var=%%g

   echo %var%

   pause

我确定我只是以错误的方式进行操作。

所以逻辑是...

在文本文件中找到一个等于/ -58 / 12 /的值。 它在哪条线上? 它在第三行。 将第三行替换为“ H”。

1 个答案:

答案 0 :(得分:0)

pos_click[5]

您需要根据自己的情况更改@ECHO Off SETLOCAL SET "sourcedir=U:\sourcedir" SET "destdir=U:\destdir" SET "filename1=%sourcedir%\q55875551.txt" SET "outfile=%destdir%\outfile.txt" ( FOR /f "delims=" %%a IN ('type "%filename1%"') DO ( IF "%%a"=="/-59/12/" ( ECHO H ) ELSE ( ECHO %%a ) ) )>"%outfile%" GOTO :EOF sourcedir的设置。

我使用了一个名为destdir的文件,其中包含一些虚拟数据用于测试。

产生定义为%outfile%的文件

空的数据行将被删除。

这只是将任何正好是“ / -59 / 12 /”的行更改为“ H”。您需要提供其他可能需要的转换的示例。

为了通用性,我特意使用了详细的布局。