Как найти текстовую строку переменной длины и заменить текст фиксированной строкой

Мне нужно найти строку в input.txt файл

Current Playback Device ID=2A99FA92-E624-4650-A032-DA719D9B03D5

и заменить его на:

Current Playback Device ID=721D0FD1-DD46-11d0-8AAC-00A0C91D299F

НО считают, что замена должна быть также в том случае, если исходная строка - в этом случае Current Playback Device ID=2A99FA92-E624-4650-A032-DA719D9B03D5 - содержит разные chatacters

Например

Current Playback Device ID=AAAAAAAA-E624-AAAA-A032-AAAAAAAAAAAA

или же

Current Playback Device ID=AAA2AAAAAAAAAAA

строка "Current Playback Device ID=" фиксированная, но значение после "=" может быть другим

Во всех случаях конечный результат должен быть

Current Playback Device ID=721D0FD1-DD46-11d0-8AAC-00A0C91D299F

Как я могу сделать?

1 ответ

@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "destdir=U:\destdir"
SET "filename1=%sourcedir%\q36387900.txt"
SET "outfile=%destdir%\outfile.txt"
SET "replacementstring=721D0FD1-DD46-11d0-8AAC-00A0C91D299F"
(
FOR /f "usebackqtokens=1*delims=" %%a IN ("%filename1%") DO (
 FOR /f "delims==" %%x IN ("%%~a") DO (
  IF "%%x"=="Current Playback Device ID" (
   ECHO(%%x=%replacementstring%
  ) ELSE (ECHO(%%a
  )
 )
)
)>"%outfile%"

GOTO :EOF

Вам нужно будет изменить настройки sourcedir а также destdir в соответствии с вашими обстоятельствами.

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

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

Удалит пустые строки.

Прочитайте каждую строку. Токенизируйте прочитанную строку и назначьте любую строку перед = в %%x, Если эта строка совпадает с целевой строкой, запишите starget + замещающую строку; в противном случае просто извергните прочитанную строку.

Другие вопросы по тегам