У меня есть строка base
формы *+*
. Я хочу получить все до +. Например, если base=foo+bar
, я хочу получить foo
.Batch * замена подстановочных знаков
Я пытался сделать это с заменой строки
set left=%base:+*=%
Но это приводит к left
хранения foo+bar
.
Интересно, что строка замены работает получать все прямо из +:
set right=%base:*+=%
ли +*
заменяется +
(т.е. группового символа является подставляя 0 символов)? Есть ли лучший способ выполнить мою задачу?
EDIT: Я на самом деле делаю это в цикле for. Поэтому отсроченное расширение включено и (я думаю) мне нужно использовать!. Полный код здесь:
for /d %%d in (*+*) do (
set base=%%d
set right=!base:*+=!
set left=!base:+*=! ::this part doesn't work
if !left:~-2!==!right:~-2! (::do only if last 2 chars match
copy %%d mirrors
copy %%d\%%d_montage.bmp mirrors
)
)
EDIT 2: Комментарии в коде выше приведены только для удобства чтения здесь. :: - комментарии стиля могут работать неправильно для циклов.
Какой язык вы пишете в? –
Судя по синтаксису и тегу, это пакетный файл Windows. – wOxxOm