Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Обрезка подстроки (http://forum.oszone.net/showthread.php?t=327751)

rene 20-06-2017 19:14 2746160

Обрезка подстроки
 
Здравствуйте еще раз, если не надоел!
Код:

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?

Iska 20-06-2017 19:29 2746168

Тут есть вопросы — какой именно IP Вам нужен:
  1. IP4 или IP6?
  2. когда их несколько?

rene 20-06-2017 19:43 2746172

Хм, озадачили. Ну предположим адрес только один - IP4

greg zakharov 20-06-2017 20:21 2746177

Да извлеките же вы 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


rene 20-06-2017 22:42 2746195

greg zakharov, Спасибо за примеры. Меня интересовало немного другое, можно ли обрабатывать переменную внутри цикла for не прибегая к использованию дополнительных переменных, т. е. не используя set. Например типа такого: %a:~1,-1. Вдруг можно, а я об этом не знаю.

greg zakharov 20-06-2017 23:31 2746201

Без set - никак; максимум к переменной можно применить модификаторы пути, например, %~na или %~da. Для манипуляций, каковой, скажем, является та же обрезка, над переменной в цикле без set не обойтись.

rene 21-06-2017 00:30 2746209

ок, спасибо!


Время: 15:05.

Время: 15:05.
© OSzone.net 2001-