1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
@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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
@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.