ЮЛ
Юська Лютикова

BAT файл. Как найти и заменить в текстовом документе спецсимвол? + внутри...



вот такой вариант почему то не работает:

@echo off
for /f "tokens=* delims=" %%i in ('type s.txt') do set x=%%i
for /f "tokens=1,* delims=%x%" %%i in ('type a.txt') do echo.%%i%%j>>b.txt

символ: ~3%%##555##!%~

запись обрабатываемого символа в отдельный файл s.txt, тогда нижеследующий код работает и удаляет спецсимвол, указанный в s.txt -- в теории.. .
где ошибка?

NK
Nurdin Kudaybergenov

Не будет обрабатывать такой символ BAT-файл.

НС
Надежда Сим

а где команда которая удаляет символ?

АЯ
Ангелинка Ягодка

Вот чёрт, не заметил, что там нет вложенности циклов. Тогда, вероятно, мешает точка после echo. Хотя сейчас попробовал - удаляет, но только первую последовательность одинаковых символов. То есть я записал в s.txt символ #, а в a.txt - ~3%%##555##!%~
В b.txt получил ~3%% 555##!%~
И это нормально, поскольку такой алгоритм разделяет строку на два элемента, пользуясь в качестве разделителя указанным символом.
Я бы написал так:
@echo off
Setlocal EnableDelayedExpansion
for /f "tokens=* delims=" %%i in ('type s.txt') do set x=%%i
for /f "delims=" %%i in ('type a.txt') do (
set s=%%i
set s=!s:%x%=!
echo! s!>>b.txt
)
Но только тут появляются ограничения, связанные с тем, что символ! в строке воспринимается, как служебный символ, поэтому из строки удаляется всё, что начинается с этого символа.

Похожие вопросы
Проблема с Bat файлами!
Помогите с *bat файлом.
Помогите с BAT файлом!
bat для удаления файлов
помогите с BAT файлом!!!
Как удалить части строк в текстовом файле посредством BAT
Как отключить создание текстового документа через bat файл?
Вопросы по .bat файлам
Отправка файла через bat-файл
.bat файл