windows-7batch-filehosts

Windows Batch: How to add Host-Entries?


I want to use this batch script to add new entries into my host file automatically by using batch.

Unfortunately, the script just adds one single line to the hosts file, also when i run the script as a administrator, so what's wrong?

@echo off

set hostspath=%windir%\System32\drivers\etc\hosts

echo 62.116.159.4 ns1.intranet.de >> %hostspath%
echo 217.160.113.37 ns2.intranet.de >> %hostpath%
echo 89.146.248.4 ns3.intranet.de >> %hostpath%
echo 74.208.254.4 ns4.intranet.de >> %hostpath%

exit

Solution

  • I would do it this way, so you won't end up with duplicate entries if the script is run multiple times.

    @echo off
    
    SET NEWLINE=^& echo.
    
    FIND /C /I "ns1.intranet.de" %WINDIR%\system32\drivers\etc\hosts
    IF %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%^62.116.159.4 ns1.intranet.de>>%WINDIR%\System32\drivers\etc\hosts
    
    FIND /C /I "ns2.intranet.de" %WINDIR%\system32\drivers\etc\hosts
    IF %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%^217.160.113.37 ns2.intranet.de>>%WINDIR%\System32\drivers\etc\hosts
    
    FIND /C /I "ns3.intranet.de" %WINDIR%\system32\drivers\etc\hosts
    IF %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%^89.146.248.4 ns3.intranet.de>>%WINDIR%\System32\drivers\etc\hosts
    
    FIND /C /I "ns4.intranet.de" %WINDIR%\system32\drivers\etc\hosts
    IF %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%^74.208.254.4 ns4.intranet.de>>%WINDIR%\System32\drivers\etc\hosts