Как извлечь часть строки в пакетном файле Windows?

Предположим, у меня есть значение, такое как "Abc_123", которое хранится в переменной в пакетном файле (cmd). Я хочу закончить с переменной, которая содержит только "123". Есть ли встроенный способ сделать это?

Я не очень требователен к методу или производительности, если он встроен в типичную систему Windows (Vista/2008).

15
задан Twisty Impersonator
18.12.2022 1:08 Количество просмотров материала 3101
Распечатать страницу

3 ответа

использовать подстроки синтаксис:

C:\Users\John>set string=Abc_123

C:\Users\John>echo %string%
Abc_123

C:\Users\John>echo %string:~4,3%
123
17
отвечен John T 2022-12-19 08:56

Если вы обнаружите, что пакетный язык недостаточно мощный, чтобы делать то, что вы хотите - и это, вероятно, не займет у вас слишком много времени, чтобы добраться до этого момента - вы можете использовать Windows PowerShell. Это не устанавливается по умолчанию на всех версиях Windows, но вы можете скачать его бесплатно.

Если вам не нравится язык PowerShell, есть Perl. Вам придется установить, что на всех системах, хотя. Есть и другие.

0
отвечен Wayne Johnston 2022-12-19 11:13

Если вы просто хотите все после подчеркивания (и не обязательно знать длину строки или где находится подчеркивание, но можете полагаться на то, что существует только одно подчеркивание), попробуйте:

for /f "tokens=2 delims=_" %%a in ("%STRING%") do (
  set AFTER_UNDERSCORE=%%a
)

в принципе, ваша строка будет разделена на токены, используя символ подчеркивания в качестве разделителя (delims=_). Только второй (tokens=2) будет передан (как переменная %%a) циклу for. Цикл будет выполняться только один раз, так как вы имеете дело с одной строкой в этом случай.

Если вы хотите сохранить материал как до, так и после подчеркивания, попробуйте:

for /f "tokens=1,2 delims=_" %%a in ("%STRING%") do (
  set BEFORE_UNDERSCORE=%%a
  set AFTER_UNDERSCORE=%%b
)

обратите внимание, что %%A-переменная, в первый знак разделения; %%B является переменной для второй маркер разделения.

0
отвечен DocOc 2022-12-19 13:30

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх