Показать полную графическую версию : [решено] Обрезка подстроки
Здравствуйте еще раз, если не надоел!
set a=123456789
echo %a:~1,-1%
Выдаст результат 23456789, т.е обрежет символы по краям. Мне необходимо обрезать крайние символы (пробел вначале и какой то непечатный символ в конце) у IP адреса. Что то вроде
for /f "tokens=2 delims=:" %a in ('ipconfig ^| find "IP"') do echo %a:~1,-1
Но так не работает. Можно ли реализовать подобное не используя set?
Тут есть вопросы — какой именно IP Вам нужен:
IP4 или IP6?
когда их несколько?
Хм, озадачили. Ну предположим адрес только один - IP4
greg zakharov
20-06-2017, 20:21
Да извлеките же вы IP-адрес из реестра и не парьтесь с работой раввина, ну а если пренципиально, то посимвольно пробегитесь по строке и извлеките подстроку. Пара примеров (выделено по той причине, что некоторые подменяют понятие примера боевым решением) получения IP:
@echo off
setlocal
for /f "tokens=2 delims=:" %%i in (
'ipconfig /all ^| findstr /irc:"ip.*: [0-9\.]"'
) do set "ip=%%i"
echo:%ip: =%
endlocal
exit /b
и
@echo off
setlocal
set "key=HKLM\SYSTEM\CurrentControlSet\Services"
set "key=%key%\Tcpip\Parameters\Interfaces"
for /f "tokens=3" %%i in (
'reg query "%key%" /s ^| findstr /irc:"dhcpipaddress"'
) do echo %%i
endlocal
exit /b
greg zakharov, Спасибо за примеры. Меня интересовало немного другое, можно ли обрабатывать переменную внутри цикла for не прибегая к использованию дополнительных переменных, т. е. не используя set. Например типа такого: %a:~1,-1. Вдруг можно, а я об этом не знаю.
greg zakharov
20-06-2017, 23:31
Без set - никак; максимум к переменной можно применить модификаторы пути, например, %~na или %~da. Для манипуляций, каковой, скажем, является та же обрезка, над переменной в цикле без set не обойтись.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.