.png)
Я хотел бы подключить нужный сетевой диск (из нескольких) к компьютеру, используя 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) в сети.
Я думаю, скрипт должен выглядеть примерно так:
- проверка IP --> ipconfig | findstr IPv4 (или сетевой интерфейс ""Ethernet""?)
- разделить IP на 4 октета (или токена?)
- сопоставление с определенным сетевым диском (из списка?) через 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"