我想通过批处理脚本将正确的网络驱动器(从多个网络驱动器中)映射到使用 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)。
我猜脚本看起来应该是这样的:
- 检查 IP --> ipconfig | findstr IPv4 (或网络接口“以太网”?)
- 将 IP 拆分为 4 个八位字节(或令牌?)
- 通过第三个八位字节映射到特定网络驱动器(从列表中?)--> 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(".")
通过第三个八位字节映射到特定的网络驱动器(从列表中?)
例如,如果服务器始终是 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"