Eu acho que o erro é o operador > . Isso realmente truncará o arquivo e, em seguida, gravará a saída no arquivo ips.txt , mas você estará em um loop e truncará o arquivo todas as vezes. Experimente o operador >> .
for /f "skip=4 usebackq tokens=2" %a in ('nslookup somedns.com') do echo %a >> ips.txt
EDIT : Para fazer um loop em um arquivo e obter o endereço IP de cada host DNS, você faria algo assim:
for /f "tokens=*" %%A in (yourhostsfile.txt) do nslookup %%A >> ips.txt