Подключить сетевой диск по IP (3-й октет)

Подключить сетевой диск по IP (3-й октет)

Я хотел бы подключить нужный сетевой диск (из нескольких) к компьютеру, используя IP-адрес, назначенный DHCP, с помощью пакетного скрипта.

Поэтому, когда компьютер подключается и ему назначается IP-адрес 192.168.0.1.10 через DHCP, он должен подключить сетевой диск к 192.168.0.1.11.

Если компьютер получает IP 192.168.2.10 через DHCP, он должен подключить сетевой диск к 192.168.0.2.11. И так далее, и тому подобное.

Поэтому я хотел бы назначить правильный IP-адрес сетевого устройства, используя третий октет IP-адреса компьютера. IP-адреса сетевых дисков являются статическими. Только IP-адрес компьютера является случайным (DHCP) в сети.

Я думаю, скрипт должен выглядеть примерно так:

  1. проверка IP --> ipconfig | findstr IPv4 (или сетевой интерфейс ""Ethernet""?)
  2. разделить IP на 4 октета (или токена?)
  3. сопоставление с определенным сетевым диском (из списка?) через 3-й октет --> net use z: \PATH-NETWORK-SHARE\FOLDER-NAME

Надеюсь, вы сможете мне помочь!

Спасибо заранее.

решение1

Вы можете попробовать что-то вроде этого (предполагая, что у каждого хоста только один IP-адрес):

@echo off
set address_begining=192.168
set host_octet=11
set ip_address_string="IPv4 Address"
REM Get IP Address
for /f "usebackq tokens=2 delims=:" %%f in (`ipconfig ^| findstr /c:%ip_address_string%`) do set ip_addr=%%f
REM Get 3rd octet
for /F "tokens=1,2,3,4 delims=." %%a in ('echo %ip_addr%') do set third_octet=%%c
net use z: \\%address_begining%.%third_octet%.%host_octet%

решение2

Я бы рекомендовал использовать PowerShell, поскольку он в любом случае входит в состав Windows, а шаги довольно просты (как и в любом разумном языке программирования):

проверка IP --> ipconfig | findstr IPv4 (или сетевой интерфейс ""Ethernet""?)

$result = (Get-NetIPAddress -InterfaceAlias "Ethernet" -AddressFamily IPv4)

$client_addr = $result[0].IPAddress

разделить IP на 4 октета (или токена?)

$octets = $client_addr.Split(".")

сопоставление с определенным сетевым диском (из списка?) через 3-й октет

Например, если сервер всегда 192.168.x.11:

# array elements are numbered 0..3
$octets[3] = 11

$server_addr = $octets -join "."

net use z: \ПУТЬ-СЕТЕВОЙ-ПАКЕТ\ИМЯ-ПАПКИ

net use Z: "\\$server_addr\The_folder"

Связанный контент