Как найти текстовую строку переменной длины и заменить текст фиксированной строкой
Мне нужно найти строку в 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 + замещающую строку; в противном случае просто извергните прочитанную строку.