バッチ スクリプトを使用して、DHCP によって割り当てられた IP を使用して、正しいネットワーク ドライブ (複数のものから) をコンピューターにマップしたいと思います。
したがって、コンピューターが接続され、IP 192.168 が割り当てられます。1.10 を DHCP 経由で接続する場合は、ネットワーク ドライブを 192.168.1.11.
コンピュータが IP 192.168 を取得した場合。2.10 を DHCP 経由で接続する場合は、ネットワーク ドライブを 192.168.2.11. 以下同様。
そこで、コンピュータの IP の 3 番目のオクテットを使用して、適切なネットワーク デバイス IP を割り当てたいと思います。ネットワーク ドライブの IP は静的です。ネットワーク内でランダムになるのは、コンピュータの IP のみです (DHCP)。
スクリプトは次のようになると思います:
- IP を確認する --> ipconfig | findstr IPv4 (またはネットワーク インターフェイス ""Ethernet"?)
- IP を 4 オクテット (またはトークン?) に分割します
- 3 番目のオクテットを介して特定のネットワーク ドライブにマップします (リストから?) --> net use z: \PATH-NETWORK-SHARE\FOLDER-NAME
あなたが私を助けてくれることを願っています!
よろしくお願いします。
答え1
次のような方法を試すことができます (各ホストに IP アドレスが 1 つしかないと仮定) :
@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 に付属しており、手順も非常に簡単なので (どのプログラミング言語でもそうであるように)、PowerShell を使用することをお勧めします。
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: \PATH-NETWORK-SHARE\FOLDER-NAME
net use Z: "\\$server_addr\The_folder"