Scripts BATCH – Modificar archivo HOSTS en WINDOWS.

@echo off
setlocal enabledelayedexpansion

set dominio=ejemplo.com
set nueva_ip=192.168.1.100

set "tempfile=%temp%\hosts.tmp"
set "hostsfile=%systemroot%\System32\drivers\etc\hosts"

REM Buscar y reemplazar la línea en el archivo hosts
for /f "tokens=*" %%a in (%hostsfile%) do (
  echo %%a | findstr /i /c:"%dominio%" >nul
  if not errorlevel 1 (
    echo %nueva_ip% %%a >> %tempfile%
  ) else (
    echo %%a >> %tempfile%
  )
)

REM Sobrescribir el archivo hosts con el archivo temporal
move /y %tempfile% %hostsfile% >nul

echo Archivo hosts modificado correctamente.

En este script, se utiliza la variable dominio para especificar el nombre de dominio que deseas modificar, y la variable nueva_ip para especificar la nueva dirección IP que deseas asignarle. El script busca la línea que contiene el nombre de dominio en el archivo hosts, y si lo encuentra, lo reemplaza con la nueva dirección IP en un archivo temporal. Luego, sobrescribe el archivo hosts original con el archivo temporal, logrando así la modificación de la entrada.

Ten en cuenta que, al igual que en los ejemplos anteriores, necesitas tener privilegios de administrador en el sistema para ejecutar este script BATCH en DOS, y debes tener precaución al modificar el archivo hosts, siguiendo las políticas de seguridad y las leyes aplicables. Además, asegúrate de hacer copias de seguridad del archivo hosts antes de modificarlo, por si necesitas restaurarlo en caso de errores o problemas.

@echo off
setlocal enabledelayedexpansion

set "modificaciones[0]=ejemplo1.com=192.168.1.101"
set "modificaciones[1]=ejemplo2.com=192.168.1.102"
set "modificaciones[2]=ejemplo3.com=192.168.1.103"
set "archivo_nuevas_lineas=nuevas_lineas.txt"

set "tempfile=%temp%\hosts.tmp"
set "hostsfile=%systemroot%\System32\drivers\etc\hosts"

REM Realizar modificaciones
for /f "tokens=*" %%a in (%hostsfile%) do (
  set "linea=%%a"
  set "modificado=false"
  
  REM Modificar líneas existentes
  for %%b in (0 1 2) do (
    for /f "delims== tokens=1,2" %%c in ("!modificaciones[%%b]!") do (
      echo !linea! | findstr /i /c:"%%c" >nul
      if not errorlevel 1 (
        echo %%d %%c >> %tempfile%
        set "modificado=true"
      )
    )
  )

  REM Escribir líneas no modificadas
  if "!modificado!"=="false" (
    echo !linea! >> %tempfile%
  )
)

REM Agregar nuevas líneas desde archivo
if exist "%archivo_nuevas_lineas%" (
  for /f "tokens=*" %%a in (%archivo_nuevas_lineas%) do (
    echo %%a >> %tempfile%
  )
) else (
  echo El archivo de nuevas líneas no se encontró: %archivo_nuevas_lineas%
  echo No se agregaron nuevas líneas al archivo hosts.
)

REM Sobrescribir el archivo hosts con el archivo temporal
move /y %tempfile% %hostsfile% >nul

echo Archivo hosts modificado correctamente.

En este otro ejemplo, se utiliza la variable archivo_nuevas_lineas para especificar el nombre del archivo que contiene las nuevas líneas que se desean agregar. El script verifica si el archivo existe y, si es así, lee las líneas del archivo y las agrega al archivo temporal. Si el archivo no existe, muestra un mensaje de error indicando que no se encontró el archivo de nuevas líneas.

Esta entrada fue publicada en Unix - Linux. Guarda el enlace permanente.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *