Отображать записи первой и последней строк, хранящиеся в переменной, с помощью Windows cmd.exe

У меня есть переменная (MyVar) со значениями, хранящимися в ней. Например -->

MyVar="123, 234, 345, 456"

Каждая запись в переменной отделяется запятой, как в примере. Я хочу иметь возможность выбрать первую и последнюю запись из этой переменной, то есть 123 и 456 соответственно.

Любая идея, как я могу добиться этого с помощью Windows cmd.exe?

Спасибо!


person SD4    schedule 14.12.2020    source источник
comment
Вам нужно начать с уточнения точных данных значения для вашей переменной, на данный момент получается, что ваша первая запись "123, а последняя ваша 456". Затем вам нужно расширить свой код, чтобы мы могли видеть, как вы определяете это переменное содержимое, как вы его используете и что именно вы хотите сделать с первым и последним перечисленными элементами.   -  person Compo    schedule 14.12.2020


Ответы (2)


Если это всегда числа больше нуля и
не начинаются с нуля, вы можете использовать set /a и переменные подстроки:

set MyVar="123, 234, 345, 456"

set /a "First=%MyVar:"=%"
for %%i in (%MyVar:"=%)do set "Last=%%i"

echo=%First% %Last%

Если значения буквенно-цифровые и могут быть установлены, начиная с нуля и/или заканчивая нулем

@echo off 

set MyVar="A01, 234, 345, 0X6"

for /f delims^=^"^, %%i in ('
echo\%MyVar%')do set "First=%%i" & (
for %%i in (%MyVar:"=%)do set "Last=%%~i")

echo=%First% %Last%
person It Wasn't Me    schedule 15.12.2020

person    schedule
comment
Просто для дополнительного разъяснения, из-за моего комментария под собственно вопросом, чтобы %first% содержал 123, а %last% содержал 456, если ваша переменная действительно имеет значение "123, 234, 345, 456", вы могли бы изменить приведенный выше код с (%myvar%) либо (%myvar:"=%), либо (%myvar:~1,-1%), чтобы заставить его работать, как задумано. - person Compo; 14.12.2020
comment
@Compo: Совершенно верно. Я предположил, что присвоение строки было выполнено с использованием предпочтительной методологии присвоения (OP: set "varname=value"), где кавычки не были частью присвоенного значения. - person Magoo; 14.12.2020