有没有办法使用findstr搜索值并返回值在文本文件中的行?

问题描述 投票:0回答:1

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

使用这一行

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

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

我试过了...

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

文本doc有/ -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 /的值。它是什么线?它在3号线上。用“H”替换第3行。

batch-file
1个回答
0
投票
@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

您需要更改sourcedirdestdir的设置以适合您的具体情况。

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

生成定义为%outfile%的文件

空数据行将被删除。

这只是将“/ -59 / 12 /”到“H”的任何一行简单地改变。您需要提供您可能需要的其他转换的示例。

我使用的布局是故意冗长的多功能性。

© www.soinside.com 2019 - 2024. All rights reserved.