Where I work, I often have to bind new hostnames in my (Windows) dev environment to test different websites. This involves hunting down the hosts file, updating it, then mucking around in IIS. It can get tedious. So naturally, I asked myself if this is something I could script out. And naturally, the answer is yes.

And here it is. I call it Addhost:

@echo off
rem Addhost v1.2 by Will Boyd

set sitename=Default Web Site
set hostfilepath=%windir%\System32\drivers\etc\hosts
set appcmdpath=%windir%\system32\inetsrv\appcmd

echo Checking privileges...
net session >nul 2>&1
if not %ERRORLEVEL% == 0 (
  echo This script must be run with administrator privileges.
  goto end
)

set hostname=%1
if "%1"=="" (
  set /p hostname="Enter the hostname to add (ex: dev.potato.com): "
)

echo Appending to hosts file...
echo.>>%hostfilepath%
echo 127.0.0.1   %hostname%>>%hostfilepath%

echo Adding binding...
%appcmdpath% set site /site.name:"%sitename%" /+bindings.[protocol='http',bindingInformation='*:80:%hostname%']>nul

echo Restarting site...
%appcmdpath% stop site /site.name:"%sitename%">nul
%appcmdpath% start site /site.name:"%sitename%">nul

echo Done. Go nuts!

:end

echo.
pause

I hope other people find this useful, too. Check out my Addhost repo on GitHub for documentation, updates, or if you want to fork it.