PDA

Показать полную графическую версию : [решено] Удаление символов переменной


NuclearBox
19-05-2019, 23:30
Здравствуйте.

Как удалить из одной переменной сиволы, которые присвоены другой переменной?
Например, надо удалить %Symbols% из %Name%:
set "Name=01234"
set "Symbols=123"

Должно получиться
Name=04

Удаление явно прописанных символов работает:
set "Name=%Name:123=%"

Как вписать вместо "123" переменную %Symbols% ?

---
И второй вопрос - как удалить определенное количество последних символов в переменных с разной длинной?

Например, для:
set "Name1=0123"
set "Name2=01234567"

удалить по 2 последних символа, чтобы получилось:
Name1=01
Name2=012345

Iska
20-05-2019, 00:47
Как удалить из одной переменной сиволы, которые присвоены другой переменной? »
@echo off
setlocal enableextensions enabledelayedexpansion

set "Name=01234"
set "Symbols=123"

echo !Name:%Symbols%=!

endlocal
exit /b 0


как удалить определенное количество последних символов в переменных с разной длинной? »
@echo off
setlocal enableextensions enabledelayedexpansion

set "Name1=0123"
set "Name2=01234567"

echo %Name1:~0,-2%
echo %Name2:~0,-2%

endlocal
exit /b 0

Читайте:
set /?

NuclearBox
20-05-2019, 02:19
Iska, спасибо за помощь!

megaloman
20-05-2019, 07:47
NuclearBox, Мои 3 копейки: ИМХО, этот способ более универсален.@Echo Off
cls
set "Name=01234"
set "Symbols=123"

Echo %Name%
Call Set "Name=%%Name:%Symbols%=%%"
Echo %Name%


set "Name=Ура! Ура! Мы в тылу врага!"
set "Symbols= Ура!"

Echo %Name%
Call Set "Name=%%Name:%Symbols%=%%"
Echo %Name%
Pause
@Echo Off
cls
set "Name=01234"
Set /A N=2

Echo %Name%
Call Set "Name=%%Name:~0,-%N%%%"
Echo %Name%

set "Name=Ура, Ура! Мы в тылу врага!"
Set /A N=17

Echo %Name%
Call Set "Name=%%Name:~0,-%N%%%"
Echo %Name%
Pause

NuclearBox
20-05-2019, 10:25
megaloman, супер. Спасибо! Для обучения бесценно. Более понятно. На Ваших кодах и начал изучать командную строку. Пока с трудом понимаю использование локального окружения, как в варианте Iska. Но рано или поздно и этот гранит прогрызу. Да поможет мне /?




© OSzone.net 2001-2012