Мне нужно использовать пакет для проверки файла Directory.twml, чтобы увидеть, содержит ли он какие-либо слова из файла заблокированного.twml и заменяет ли он на [Blocked]
Вот пример обоих файлов:
Directory.twml
11:38:38.90 [System] Twml Has joined the chat.
11:38:41.17 [User] Twml says: line one
11:38:42.96 [User] Twml says: line bad two
11:38:46.27 [User] Twml says: line three
11:38:50.16 [User] Twml says: you get the idea here
11:38:52.35 [System] Twml Has logged off.
Заблокировано.twml
word1
word2
word3
bad
word5
word6
Я хочу, чтобы Directory.twml выглядел так:
11:38:38.90 [System] Twml Has joined the chat.
11:38:41.17 [User] Twml says: line one
11:38:42.96 [User] Twml says: line [Blocked] two
11:38:46.27 [User] Twml says: line three
11:38:50.16 [User] Twml says: you get the idea here
11:38:52.35 [System] Twml Has logged off.
Я уже могу использовать Findstr, чтобы просмотреть файл и посмотреть, существует ли текст, но это, насколько я могу, мне нужно не проверять заданное слово, а проверять список слов в файле Blocked.twml.
findstr /i "bad" <"Directory.twml" 1>nul
Также я могу удалить слово из файла, но я хочу заменить его, а не просто удалить
findstr /i /v /c:"%text%" Directory.twml > "Directory.twmll" 2>nul
del Directory.twml /s /a >nul
copy Directory.twmll Directory.twml >nul
attrib +h Directory.twml
del Directory.twmll /s /a >nul
Но опять же это заданный текст искать не из того что в файле как список
Если Directory.twml содержит что-либо в Blocked.twml, замените на [Blocked], но я не могу понять, как это сделать.
========= Редактировать ===========
Это решение:
(
for /f "delims=" %%A in (Directory.twml) do (
set "line=%%A"
for /f "delims=" %%B in (blocked.twml) do set "line=!line: %%B = [Blocked] !"
echo !line!
)
)>Directory.new
Его вывод выглядел так для меня
13:22:14.16 [User] twml says: this is a test
13:22:20.37 [User] twml says: this is a [Blocked] word test