GCRaistlin
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору korosya Цитата: в приведенном примере ни в одной строке нет делимитера ], и все они, кроме проблемной попадают в выходной файл. | Значит, вывод обрабатывается на самом деле не такой, что у тебя в посте. Чудес не бывает. Цитата: Нет уж, распиши сам. Я не понял, на фига тебе замена строк, содержащих '!' и т. д., если в изначальном примере ты меняешь 'isolinux' на 'syslinux'. Цитата: моя догадка с cd /rescue/rescueusb.iso - не верна? | Нет. Добавлено: korosya С делимитером понял, почему все работало - там же номера строк выводятся в исходном варианте. Так что переписываем без делимитера: Код: for /f "usebackq tokens=*" %%B in ("%~1") do ( for /f "delims=" %%C in ("%~2") do ( for /f "delims=" %%D in ("%~3") do ( set CurrentLine=%%B if defined CurrentLine ( setlocal enabledelayedexpansion >>temp\tmp.txt echo !CurrentLine:%%C=%%D! endlocal ) else ( >>temp\tmp.txt echo/ ) ) ) ) | Или пустые строки нужны? Сейчас они пропускаются. Добавлено: Итак, чтобы не пропускались пустые строки: Код: for /f "tokens=1* delims=]" %%A in ('type "%~1"^|find /n /v ""') do ( for /f "delims=" %%C in ("%~2") do ( for /f "delims=" %%D in ("%~3") do ( set CurrentLine=%%B if defined CurrentLine ( setlocal enabledelayedexpansion >>temp\tmp.txt echo !CurrentLine:%%C=%%D! endlocal ) else ( >>temp\tmp.txt echo/ ) ) ) ) |
---------- Magically yours Raistlin |
| Всего записей: 4132 | Зарегистр. 18-04-2005 | Отправлено: 16:46 03-01-2014 | Исправлено: GCRaistlin, 17:17 03-01-2014 |
|