CMD/BAT - [решено] CMD Разрезание строки на подстроки
-
Foreigner
Re: CMD/BAT - [решено] CMD Разрезание строки на подстроки
Iska, conemu
- Вложения
-
[Расширение png было запрещено, вложение больше недоступно.]
-
Iska
-
Foreigner
-
Iska
Re: CMD/BAT - [решено] CMD Разрезание строки на подстроки
Acuna, вам скрипт нужен принципиально или можно обойтись стандартными средствами?
Любой текстовый редактор, понимающий регулярные выражения в поиске/замене. Тот же всем известный
Замена в два прохода. Первый - замена ; на перевод строки \n
Второй - замена key на %key%.
Делов на 5 секунд.
Любой текстовый редактор, понимающий регулярные выражения в поиске/замене. Тот же всем известный
Notepad++
Замена в два прохода. Первый - замена ; на перевод строки \n
Второй - замена key на %key%.
Делов на 5 секунд.
-
Acuna
Re: CMD/BAT - [решено] CMD Разрезание строки на подстроки
yurfed, к сожалению, да. Предполагается, что эти аргументы юзеры будут вводить самостоятельно при использовании этого батника. То, что они работают с батниками, еще не свидетельствует об их обширных понятиях в этой области) Так что да, все должно быть "само") Ну либо если все-таки батники будут вредничать и дальше и расколоться не захотят - воспользуюсь неплохим решением Georgio. Просто мне все-таки хотелось одним аргументом все присунуть...
Foreigner, ну хорошо, вот ты получил эти три строки. А можно их как-то по знаку = теперь разделить на ключ и значение? Возможно, это то, что нужно)
Foreigner, ну хорошо, вот ты получил эти три строки. А можно их как-то по знаку = теперь разделить на ключ и значение? Возможно, это то, что нужно)
-
Foreigner
Re: CMD/BAT - [решено] CMD Разрезание строки на подстроки
Acuna, можно:
Код:
Вывод:
Код:
Код:
Код: Выделить всё
:: mybatch %var% "key1=1;key2=2;key3=3"
@echo off
setlocal
echo %1
set str="%~2"
for %%i in (%str:;=","%) do 1>nul set %%i
for /f "tokens=1,2 delims==" %%i in ('set key') do echo %%i %%jВывод:
Код:
Код: Выделить всё
test
key1 1
key2 2
key3 3-
Acuna
Re: CMD/BAT - [решено] CMD Разрезание строки на подстроки
Эцнова я) Foreigner, странно, но в mybatch пишет то же самое:
Цитата:
Переменная среды key не определена
Режим вывода команд на экран (echo) отключен
Нет, ну надо же какие душлые!
Цитата:
Переменная среды key не определена
Режим вывода команд на экран (echo) отключен
Нет, ну надо же какие душлые!

-
Foreigner
Re: CMD/BAT - [решено] CMD Разрезание строки на подстроки
Acuna, Я даже не знаю, что посоветовать, скопировал свой последний вариант, все работает. Вы не забыли строку key1.... взять в кавычки?
Код:
Т.к. символ ";" является разделителем. Во всяком случае в 8.1
Вы лучше напишите, что нужно конкретно, так будет проще.
Код:
Код: Выделить всё
mybatch %var% "key1=1;key2=2;key3=3"Т.к. символ ";" является разделителем. Во всяком случае в 8.1
Вы лучше напишите, что нужно конкретно, так будет проще.
-
Acuna
Re: CMD/BAT - [решено] CMD Разрезание строки на подстроки
Цитата Acuna:
а что за запятая в первой строке тут: %str:;=","% Это какой-то спец. символ, или что?
Замена всех вхождений символа «;» в переменной окружения «str» на последовательность «","». Таким образом «"key1=1;key2=2;key3=3"» превращается в «"key1=1","key2=2","key3=3"».
Цитата Acuna:
И do 1>nul set %%i что-то подавляет? А что?
Перенаправление stdout на пустое устройство («1>nul») подавляет вывод команды «set %%i».
а что за запятая в первой строке тут: %str:;=","% Это какой-то спец. символ, или что?
CMD/BAT - [решено] CMD Разрезание строки на подстроки
Замена всех вхождений символа «;» в переменной окружения «str» на последовательность «","». Таким образом «"key1=1;key2=2;key3=3"» превращается в «"key1=1","key2=2","key3=3"».
Цитата Acuna:
И do 1>nul set %%i что-то подавляет? А что?
CMD/BAT - [решено] CMD Разрезание строки на подстроки
Перенаправление stdout на пустое устройство («1>nul») подавляет вывод команды «set %%i».
-
Iska
Re: CMD/BAT - [решено] CMD Разрезание строки на подстроки
Iska, ясно, спасибо! Но ведь set только вводит новую переменную. А зачем ее нужно вводить и тут же подавлять? Или я что-то недопонимаю?)