CMD/BAT - как быть если разделители кавычки("):for /f "tokens=1,2,3 delims=?

Ответить
Аватара пользователя
akrav

CMD/BAT - как быть если разделители кавычки("):for /f "tokens=1,2,3 delims=?

Сообщение akrav »

Добрый день! Есть файл, в котором значения в строках разделены кавычками (“). Необходимо эти значения вытащить и проанализировать. Допускает ли delims значения равные кавычкам(")? Если да, то как это грамотно записать?

так не работает:

Код:

Код: Выделить всё

for /f "tokens=1,2,3 delims=""
Аватара пользователя
Creat0R

Re: CMD/BAT - как быть если разделители кавычки("):for /f "tokens=1,2,3 delims=?

Сообщение Creat0R »

akrav,

С батниками давно дело не имел, но помню что для отмены спец. символов, нужно подставлять символ ^.





Код:

Код: Выделить всё

for /f "tokens=1,2,3 delims=^""

хотя сомневаюсь что сработает Изображение ...



Можно в принципе заменить кавычку другим символом, и потом обработать циклом через этот символ...





Код:

Код: Выделить всё

For /F "tokens=1,2,3 delims=" %%i In (MyFile.txt) Do Set Var=%%i
Set Var=%Var:"=¶%
For /F "delims=¶" %%j In ("%Var%") Do Echo %%j
Аватара пользователя
akrav

Re: CMD/BAT - как быть если разделители кавычки("):for /f "tokens=1,2,3 delims=?

Сообщение akrav »

На тот случай, если кому-то когда-нибудь потребуется:





Код:

Код: Выделить всё

set a="123"
echo %a%
for /f delims^=^"^ tokens^=1 %%i in ("%a%") do echo %%i

Правда, работает только для одного токена.
Аватара пользователя
Bruce Wayne

Re: CMD/BAT - как быть если разделители кавычки("):for /f "tokens=1,2,3 delims=?

Сообщение Bruce Wayne »

А вот вариант для нескольких токенов:





Код:

Код: Выделить всё

for /f "delims=" %%i in (text.txt) do (
set V=%%i
call set V=%%V:"=µ%%
for /f "tokens=2,6,8 delims=µ" %%a in ('call echo.%%V%%') do (echo %%a
echo %%b
echo %%c))
)

P. S. Файл просто для большей наглядности Изображение
Аватара пользователя
amel27

Re: CMD/BAT - как быть если разделители кавычки("):for /f "tokens=1,2,3 delims=?

Сообщение amel27 »

Цитата Bruce Wayne:





Код:

Код: Выделить всё

set a="123"
echo %a%
for /f delims^=^"^ tokens^=1 %%i in ("%a%") do echo %%i

Правда, работает только для одного токена.
CMD/BAT - как быть если разделители кавычки("):for /f "tokens=1,2,3 delims=?




не только для одного:



Код:

Код: Выделить всё

for /f tokens^=1^,2^,3^ delims^=^" %%a in ("1""2""3") do echo %%a--%%b--%%с
Ответить

Вернуться в «Скриптовые языки администрирования Windows»