Подстрока DOS, где длина является переменной

#variables #dos #substring

#переменные #dos #подстрока

Вопрос:

Я пытаюсь извлечь подстроку из переменной в пакетном скрипте DOS. Насколько я понимаю, это делается с помощью оператора, подобного следующему:

 set substring=%original_string:~2,3%  
  

Где 2 будет смещением на основе нуля, а 3 будет длиной извлекаемой подстроки. Пока все хорошо, верно?

Но мне нужно, чтобы моя длина была переменной, а не явным числом. Я почти уверен, что это можно сделать, но правильный синтаксис ускользает от меня 🙁

То, что я пробовал, это…

 set string=string

set length=3

set substring=%string:~0,%length%%

echo substring is: %substring%
  

Что я получаю…

 substring is: length%
  

Я пытался удалить 1 набор знаков процента, но … ничего хорошего.

Кто-нибудь знает, могу ли я и как я могу делать то, что хочу???

спасибо!

Комментарии:

1. Ну, я нашел кого-то, кто НАМНОГО лучше в этом, чем я, и он дал мне решение за считанные секунды! call set substring=%%string:~0,%length%%% (Теперь мне просто нужно узнать, как и почему это работает!)

2. Если это решение работает для вас, сделайте его ответом и примите его.

3. Первый комментарий не работает для меня, у вас есть другая идея?

Ответ №1:

Измените ее на это:

 call set substring=%%string:~0,%length%%%
  

Комментарии:

1. Я пробовал ваше решение, но у меня не работает. У вас есть другая идея?