Показать полную графическую версию : [решено] Парсить текст.
root,second,green,blue
end,start,yes,welcome
Нужно парсить второе и третье слово из строки, чтобы получилось так:
second,green
start,yes
Из командной строки:
for /f "tokens=2,3 delims=," %i in (file.txt) do @echo %i,%j
Iska, спасибо.
Можно еще помощь, если между словами разный разделитель.
root,second;green.blue:red
Получить так:
second;green:red
Какие здесь:
root,second;green.blue:red »
разделители?
Такие как: запятая, точка с запятой, точка, двоеточие.
В первом вопросе, слова разделял только знак: запятая.
Ясно.
Тогда разъясните, каким образом из
root,second;green.blue:red
может получиться:
second;green:red
если изначально Вы пишете о:
…второе и третье слово из строки, »
Определитесь в своих требованиях.
Iska, это "…второе и третье слово из строки" к первому вопросу было. Второй вопрос, просто примером спросил. Не подумал, что надо было описать (второе, третье, пятое), извините.
WoW, с этим ясно.
Тогда достаточно в предыдущем примере указать несколько разделителей и соответствующие элементы:
for /f "tokens=2,3,5 delims=,;.:" %i in (file.txt) do @echo %i,%j,%k
second,green,red
Проблема возникает с получаемыми разделителями, ибо в коде они указаны напрямую:
echo %i,%j,%k
и нет возможности получить их прозрачно из исходного файла. Вам такое подходит?
Iska, подходит. Спасибо!
Только такая ошибка:
Непредвиденное появление: i.
C:\>for /f "tokens=2,3,5 delims=,;.:" i,k
Если так, то нормально:
for /f "tokens=2,3,5 delims=,;.:" %%i in (file.txt) do @echo %%i,%%j,%%k
Только такая ошибка… »
Я привёл код для применения непосредственно из командной строки. В случае его использования в пакетном файле символы «%» при переменных цикла нужно удваивать. Что Вы, собственно, и верно сделали.
Внутри пакетного файла можно убрать и подавление вывода команды «@» — при «… do @echo %%i,…» — если используется «echo off» в начале пакетного файла.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.