2014-01-20 24 views
1

我對此很陌生,所以請耐心等待。基於IP的'主機'文件

我想寫一個批處理文件,可以替換etc/hosts文件,這取決於我登錄時所處的VLAN。 ie:當我登錄時,我得到了xxx。 xxx.102.xxx本地IP,我想使用hosts1文件。當我登錄時,我有xxx.xxx.103.xxx本地IP,我想使用hosts2文件。

因此,基本上基於ipconfig的輸出,掃描它爲「102」和「103」,並且當輸出中的數字時,它可以替換Windows目錄中的hosts文件。

想法?

+0

你不能只在你的MAC地址分配一個靜態本地IP在路由器配置? – Ivan0x32

回答

0
for %%a in (102 102 103) do (

    ipconfig | find "xxx.xxx.%%a.xxx" >nul 2>&1 && copy /y hosts%%a "%SystemRoot%\system32\drivers\etc\hosts" 
) 

會工作,如果你有管理員權限和你的主機文件anemd hosts101 hosts102 ...

0

你可以試試這個。我在這裏使用findstr的正則表達式功能:

ipconfig | findstr /er "[0-9][0-9]*.[0-9][0-9]*.102.[0-9][0-9]*" && copy hosts1 "%windir%\system32\drivers\etc\hosts" 
ipconfig | findstr /er "[0-9][0-9]*.[0-9][0-9]*.103.[0-9][0-9]*" && copy hosts2 "%windir%\system32\drivers\etc\hosts" 
+0

我不確定該正則表達式是否會處理IP地址中的單個數字。 – foxidrive

+0

@foxidrive這個正則表達式顯然不能測試IPv4的有效性。但是,它可以在輸出中找到(有效的)IPv4。你爲什麼認爲,它不會處理單個數字? ''[0-9] [0-9] *'和ERE中的'[0-9] +'相同,即'一個或多個'。 – Endoro

+0

是的,你是對的。 '*'是零或更多 - Mea Culpa。 – foxidrive