按 IP(第 3 個八位元組)對應網路驅動器

按 IP(第 3 個八位元組)對應網路驅動器

我想透過批次腳本使用 DHCP 分配的 IP 將正確的網路磁碟機(從多個磁碟機)對應到電腦。

因此,當電腦連接並且 ie 被分配 IP 192.168 時。1.10 透過DHCP,他應該將網路磁碟機對應到192.168。1.11.

如果計算機獲得IP 192.168。2.10 透過DHCP,他應該將網路磁碟機對應到192.168。2.11.等等等等。

所以我想使用電腦IP的第三個八位元來分配正確的網路設備IP。網路驅動器 IP 是靜態的。網路中只有電腦的 IP 是隨機的 (DHCP)。

我猜腳本應該看起來像這樣:

  1. 檢查 IP --> ipconfig | findstr IPv4(或稱網路介面「乙太網路」?)
  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(或稱網路介面「乙太網路」?)

$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: \PATH-NETWORK-SHARE\FOLDER-NAME

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

相關內容