Kirillhome
Full Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Pacho Из файла - получилось содержимое файла my_file.txt Код: 123"456 789"012 234"567 890"123 | Вот - разбор: Код: @echo off for /f "tokens=*" %%a in (my_file.txt) Do Call :Prv %%a GOTO :EOF :PRV echo 1:%* set "my_full=%*" set "my_full=%my_full:"= %" for /f "tokens=*" %%b in ("%my_full%") Do Call :Prv2 %%b goto :EOF :PRV2 echo 2:%* goto :EOF | Т.е. сначала всё читаем, заменяем в строке кавычку на пробел, передаём следующей разборке (если надо, конечно). Можно схитрить, и менять не на пробел, а, предположим на символ с кодом 255 (FF в 16-ричной системе) - тогда потом, указав его в качестве разделителя - можем обратиться именно к нужному полю. Т.е. входной - тот же, обратимся ко второму полю Код: @echo off for /f "tokens=*" %%a in (my_file.txt) Do Call :Prv %%a GOTO :EOF :PRV echo 1:%* set "my_full=%*" set "my_full=%my_full:"=%" for /f "tokens=2 delims=" %%b in ("%my_full%") Do Call :Prv2 %%b goto :EOF :PRV2 echo 2:%* goto :EOF | Здесь - символ с кодом FF в 16-ке. На выходе в этом случае: 1:123"456 789"012 2:456 789 1:234"567 890"123 2:567 890 Добавлено: mugil_cephalus Цитата: king_stiven странно, что так экранируется - ECHO Quit=^13>>qq.prn - хотя одним ^ оба символа вместе и потоков всего 9 так не экранируется - ECHO Quit=^1 3>>qq.prn - это понятно | Экранируется только один символ, идущий за ^ Поэтому в данном случае ECHO Quit=^13>>qq.prn экранируется не 13, а 1, а уже 3 - идёт как обычный символ. | Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 20:38 21-01-2010 | Исправлено: Kirillhome, 20:39 21-01-2010 |
|