Предположим, у меня есть значение, например «Abc_123», которое хранится в переменной в пакетном (cmd) файле. Я хочу в конечном итоге с переменной, которая содержит только «123». Есть ли встроенный способ сделать это?
Я не очень требователен к методу или производительности, если он встроен в типичную систему Windows (Vista / 2008).
windows
batch-file
string-manipulation
кругозор
источник
источник
help set
как указано в разделе Как лучше всего сделать подстроку в командном файле? на StackOverflow.%string:~%start%,%len%%
CALL
, какCALL SET _substring=%%_donor:~%_startchar%,%_length%%%
Если вы просто хотите все после подчеркивания (и не обязательно знаете длину строки или где находится подчеркивание, но можете полагаться только на одно подчеркивание), попробуйте:
По сути, ваша строка будет разбита на токены с использованием подчеркивания в качестве разделителя (delims = _). Только второй (tokens = 2) будет передан (как переменная %% a) в цикл for. Цикл будет выполняться только один раз, поскольку в этом случае вы имеете дело с одной строкой.
Если вы хотите сохранить материал как до, так и после подчеркивания, попробуйте:
Обратите внимание, что %% a является переменной для первого токена разбиения; %% b - это переменная для второго токена разбиения.
источник
Если вы обнаружите, что пакетный язык недостаточно мощный, чтобы делать то, что вы хотите - и, скорее всего, вам не понадобится слишком много времени, чтобы достичь этого - вы можете использовать Windows PowerShell . Он не установлен по умолчанию во всех версиях Windows, но вы можете скачать его бесплатно.
Если вам не нравится язык PowerShell, есть Perl. Вы должны будете установить это на всех системах, хотя. Есть и другие тоже.
источник
источник
*
жадным? Я использовал хороший старыйIF NOT ... GOTO :replace
, но было бы хорошо, если бы был лучший способ._
их, перейдите к последнему, а затемset var