IP でネットワーク ドライブをマップする (3 番目のオクテット)

IP でネットワーク ドライブをマップする (3 番目のオクテット)

バッチ スクリプトを使用して、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)。

スクリプトは次のようになると思います:

  1. IP を確認する --> ipconfig | findstr IPv4 (またはネットワーク インターフェイス ""Ethernet"?)
  2. IP を 4 オクテット (またはトークン?) に分割します
  3. 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"

関連情報