CMD/BAT - [решено] CMD Разрезание строки на подстроки

Аватара пользователя
Foreigner

Re: CMD/BAT - [решено] CMD Разрезание строки на подстроки

Сообщение Foreigner »

Iska, conemu
Вложения

[Расширение png было запрещено, вложение больше недоступно.]

Аватара пользователя
Iska

Re: CMD/BAT - [решено] CMD Разрезание строки на подстроки

Сообщение Iska »

Acuna, вам скрипт нужен принципиально или можно обойтись стандартными средствами?

Любой текстовый редактор, понимающий регулярные выражения в поиске/замене. Тот же всем известный
Notepad++


Замена в два прохода. Первый - замена ; на перевод строки \n

Второй - замена key на %key%.

Делов на 5 секунд.
Аватара пользователя
Acuna

Re: CMD/BAT - [решено] CMD Разрезание строки на подстроки

Сообщение Acuna »

yurfed, к сожалению, да. Предполагается, что эти аргументы юзеры будут вводить самостоятельно при использовании этого батника. То, что они работают с батниками, еще не свидетельствует об их обширных понятиях в этой области) Так что да, все должно быть "само") Ну либо если все-таки батники будут вредничать и дальше и расколоться не захотят - воспользуюсь неплохим решением Georgio. Просто мне все-таки хотелось одним аргументом все присунуть...



Foreigner, ну хорошо, вот ты получил эти три строки. А можно их как-то по знаку = теперь разделить на ключ и значение? Возможно, это то, что нужно)
Аватара пользователя
Foreigner

Re: CMD/BAT - [решено] CMD Разрезание строки на подстроки

Сообщение Foreigner »

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 Разрезание строки на подстроки

Сообщение Acuna »

Эцнова я) Foreigner, странно, но в mybatch пишет то же самое:




Цитата:



Переменная среды key не определена

Режим вывода команд на экран (echo) отключен



Нет, ну надо же какие душлые! Изображение
Аватара пользователя
Foreigner

Re: CMD/BAT - [решено] CMD Разрезание строки на подстроки

Сообщение Foreigner »

Acuna, Я даже не знаю, что посоветовать, скопировал свой последний вариант, все работает. Вы не забыли строку key1.... взять в кавычки?



Код:

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

mybatch %var% "key1=1;key2=2;key3=3"

Т.к. символ ";" является разделителем. Во всяком случае в 8.1



Вы лучше напишите, что нужно конкретно, так будет проще.
Аватара пользователя
Acuna

Re: CMD/BAT - [решено] CMD Разрезание строки на подстроки

Сообщение Acuna »

Цитата Acuna:



а что за запятая в первой строке тут: %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 »

Iska, ясно, спасибо! Но ведь set только вводит новую переменную. А зачем ее нужно вводить и тут же подавлять? Или я что-то недопонимаю?)
Ответить

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