Есть ли способ использовать findstr для поиска значения и возврата строки, в которой находится значение в текстовом файле? - PullRequest
0 голосов
/ 27 апреля 2019

Я хочу найти значение в текстовом файле, содержащем более 120 строк, а затем установить строку, в которой было найдено значение, в качестве переменной, чтобы я мог вернуться и заменить значение в текстовом файле другим значением.

Используя эту строку

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

я могу найти значение (координата) / -59 / 12 / в тексте (ScreenData.txt) и затем присвоить его переменной (var).Затем я могу вывести% var% и получить вывод / -59 / 12 /, но нет способа заменить / -59 / 12 / на (буква H, например).

Я пробовал...

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

текстовая документация имеет / -58 / 12 / в качестве 2-й строки, однако выводом был 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-й строке.заменить 3-ю строку на "H".

1 Ответ

0 голосов
/ 27 апреля 2019
@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 в соответствии с вашими обстоятельствами.

Я использовал файл с именем q55875551.txt, содержащий некоторые фиктивные данные для моего тестирования.

Создает файл, определенный как% outfile%

Пустые строки данных будут удалены.

Это просто меняет любую строку, которая в точности равна "/ -59 / 12 /", на "H". Вам нужно будет привести примеры других преобразований, которые вам могут понадобиться.

Макет, который я использовал, намеренно многословен для универсальности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...