Buscar

Script de CMD para cambiar la IP del equipo

A continuación veremos un script de CMD para cambiar de forma automática la configuración TCP/IP del equipo:

Script de CMD para cambiar la IP del equipo

La opción A y B configuran una IP estática con una puerta de enlace. La opción C configura DHCP.

Contenido del script:

@echo off 
set IP_Addr=192.168.2.10
set Sub_Mask=255.255.255.0


:choice 
cls
echo Choose: 
echo [A] Set Static IP 192.168.2.10 gw 192.168.2.254
echo [B] Set Static IP 192.168.2.10 gw 192.168.2.5
echo [C] Set DHCP
echo [Z] Quit 
echo. 

SET /P C=[A,B,C,Z]? 
for %%? in (A) do if /I "%C%"=="%%?" goto A 
for %%? in (B) do if /I "%C%"=="%%?" goto B 

for %%? in (C) do if /I "%C%"=="%%?" goto C
for %%? in (Z) do if /I "%C%"=="%%?" goto Z
goto choice 
:A 
set D_Gate=192.168.2.254

echo "Setting Static IP Information" 
netsh interface ip set address "LAN" static %IP_Addr% %Sub_Mask% %D_Gate% 1 
netsh int ip show config 
pause 
goto choice

:B
set D_Gate=192.168.2.5

echo "Setting Static IP Information" 
netsh interface ip set address "LAN" static %IP_Addr% %Sub_Mask% %D_Gate% 1 

netsh int ip show config 
pause 
goto choice

:C 
@ECHO OFF 
ECHO Resetting IP Address and Subnet Mask For DHCP 
netsh int ip set address name = "LAN" source = dhcp


ipconfig /renew

ECHO Here are the new settings for %computername%: 
netsh int ip show config

pause 
goto choice


:Z
exit
:end

Nota sobre el script:
- El nombre del interfaz de red es "LAN", para adaptar el script a nuestro entorno deberemos verificar el nombre de nuestro interfaz de red. Es posible que el nombre sea: "Conexión de área local"




8 comentarios:

  1. Hola!
    A ver si me puedes ayudar... si ejecuto las instrucciones desde cmd me funcionan, pero si las encapsulo en un script me da el siguiente error:

    "El nombre de archivo, el nombre de directorio o la sintaxis de la etiqueta del volumen no son correctos."

    Alguna idea?
    Gracias!

    ResponderEliminar
    Respuestas
    1. Algunas cosas a verificar:

      ¿La extensión del script es .BAT?

      ¿Tienes configurado en el explorador de Windows que muestre extensiones?

      ¿Lo estas ejecutando en el directorio donde está situado el script?

      Puedes cambiar la primera linea del script de echo off a echo on y verás cada linea de comando y su respuesta.

      Puedes colocar varios comandos pause en el script para ver en que punto falla.

      Ya nos contarás!

      Un saludo!

      Eliminar
    2. Si, es un bat y se ejecuta bien, la única líena de código que no le gusta es esta:
      *****
      netsh interface ip set address "Conexión de área local" static 192.168.1.50 255.255.255.0 192.168.1.1 1
      *****

      Pero si se la ejecuto directamente en el CMD se la traga bien y la ejecuta correctamente... sólo falla desde el script (que lo ejecuto en modo admin)

      Eliminar
    3. Tiene pinta de ser los acentos de las palabras "Conexión" y "área". Prueba de renombrar el nombre del interface a por ejemplo: LAN.

      ¡Ya nos contarás!

      Eliminar
  2. Hola hay alguna manera de que le pueda configurar dentro del archivo el user y pass de administrador con privilegios admin y otra cosa estoy utilizando esto para que me solicite el password :

    echo off
    :: BatchGotAdmin
    :-------------------------------------
    REM --> Check for permissions
    >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
    REM --> If error flag set, we do not have admin.
    if '%errorlevel%' NEQ '0' ( echo Requesting administrative privileges... goto UACPrompt) else ( goto gotAdmin )
    :UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
    "%temp%\getadmin.vbs"
    exit /B
    :gotAdmin
    chkdsk

    pero luego no ejecuta : netsh int ip set address name = "LAN" source = dhcp porque dice " el nombre del archivo, el nombre del directorio o la sintaxis de la etiqueta del volumen no son correctos"

    te paso alguna vez?

    ResponderEliminar
    Respuestas
    1. Hola Victor,

      Si lo que quieres es lanzar el script con unas credenciales concretas, una de las formas es utilizar la herramienta gratuita psexec de sysinternals y con parámetros especificar las credenciales que quieras.

      Un saludo!

      Xavi.

      Eliminar