Advertisements

How to script a change to a static IP address or DHCP IP address in Windows using a batch file

More and more I find myself needing to temporarily set static IPs on my laptop to access equipment for configuration or management, and changing IP addressing in Windows is easy enough, but I often either forget the settings I need or need to switch back and forth quickly and it becomes veryb time-consuming or tedious.

After searching around for a way to do this I found that scripting the IP changes via netsh in a batch file was a great way to not only change the IPs quickly and easily, but relieve myself from having to remember the IP addresses — I could simply save each configuration in a seperate batch file and name it appropriately. I could then switch back and forth quickly.

So here’s how to do it:

First, you’re going to need to know the basics of creating a batch file. If you’re not sure how to do it, click here to read how; it’s actually quick and easy.

Next, I’m going to show you some examples and the parameters, and then further below there will be a template batch file you can copy and easily edit.

Syntax of setting IP address:

netsh int ipv4 set address name=<interface name> source=<'static' | 'dhcp'> [address=<IP address[/bitmask]>] [mask=<netmask>] [gateway=<gateway>]

Syntax of setting DNS server address:

netsh int ipv4 set dns name=<interface name> source=<'static' | 'dhcp'> [address=<address | 'none'>] [register=<'none' | 'primary' | 'both'>] [validate=<'yes' | 'no'>]

Here’s a short run-down of what the various parameters mean. For further reading, consult the Microsoft Technet article on netsh.

Frequently used ‘address’ parameters are…

  • name = Interface name or index.
    (If you’re setting this up on a wired LAN connection, it’s usually “Local Area Connection” (not case sensitive), check control panel if you’re unsure.)
  • source = ‘dhcp’ or ‘static’
  • address = IP address, optionally the subnet prefix length192.168.1.1 or 192.168.1.1/24
  • mask = The IP subnet mask for the specified IP address
    (use subnet prefix length in address -or- mask, not both)
  • gateway (optional) = ; or ‘none’ (default)

Frequently used ‘dns’ parameters….

  • name = The name or index of the interface. (See note above)
  • source = ‘dhcp’ or ‘static’
  • address = IP address or ‘none’
  • register = One of the following values:
  • none: Disables Dynamic DNS registration.
  • primary: Register under the primary DNS suffix only.
  • both: Register under both the primary DNS suffix, as well as under the connection-specific suffix.
  • validate = Specifies whether validation of the DNS server setting will be performed. The value is yes by default. (Passing ‘no’ is suggested to prevent scripting issues)

The following are a few examples of how to set addresses and DNS servers. Feel free to use them or change them however you like.

Example to set static IP, mask, and gateway address:

netsh int ipv4 set address name="Local Area Connection" source=static address=10.127.86.25 mask=255.255.255.240 gateway=10.127.86.30

An example to set static DNS (you may have to use this in conjunction with the above)

netsh int ipv4 set dns name="Local Area Connection" source=static address=10.127.70.1 register=primary validate=no

So if you needed, you could combine the above two commands into a single batch file, like so:

netsh int ipv4 set address name="Local Area Connection" source=static address=10.127.86.25 mask=255.255.255.240 gateway=10.127.86.30
netsh int ipv4 set dns name="Local Area Connection" source=static address=10.127.70.1 register=primary validate=no

Important: If you are using this on a Windows XP or another system without iPv6 support, change ‘ipv4’ to ‘ip’. Also, make sure your cable is unplugged before setting a static IP, else the command will freeze.

To set both address and DNS to DHCP:

netsh interface ipv4 set address name="Local Area Connection" source=dhcp
netsh interface ipv4 set dnsservers name="Local Area Connection" source=dhcp

Important: There is a confusing disconnect between netsh setting DHCP and what is reported in the network connection properties. If you set a static IP, then later set DHCP, the static IP will still appear in the network connection properties dialog. However, once you plug into a DHCP-enabled network, your network adapter will configure properly. It doesn’t look like it will work, but it does.

If you want to make easy-to-use static IP scripts, create some batch files with helpful prompts like the following:

@echo Be sure NIC cable is unplugged and
@pause
netsh interface ipv4 set address name="Local Area Connection" source=static address=10.255.0.2 mask=255.255.255.252

An example of a user-friendly DHCP script

netsh interface ipv4 set address name="Local Area Connection" source=dhcp
netsh interface ipv4 set dnsservers name="Local Area Connection" source=dhcp
@echo It may take a few moments for changes to take effect. You may close this window or
@pause

Important: In order for any batch file changes to work, you MUST right-click and ‘Run as administrator’ on Windows Vista and Windows 7.

If you have any comments or feedback from the above, please feel free to share in the comments section below. Thank you!

Advertisements

, ,

  1. #1 by Ken on September 1, 2012 - 1:30 pm

    Thanks for posting this. I wish I found this post before I started writing my script.
    I wasted a bunch of time trying to figure out why I couldn’t set it back to DHCP until I read why:

    “Important: There is a confusing disconnect between netsh setting DHCP and what is reported in the network connection properties. If you set a static IP, then later set DHCP, the static IP will still appear in the network connection properties dialog. However, once you plug into a DHCP-enabled network, your network adapter will configure properly. It doesn’t look like it will work, but it does.”

    Thanks Again,
    Ken

    • #2 by Mike Beach on September 1, 2012 - 10:10 pm

      Thanks Ken. That was one of the things I kept tripping up on when I was writing these myself. Every resource I could find said that you could set DHCP, but it was never reflected in the properties dialog. As it turns out, it doesn’t update the properties dialog until after you plug in to a DHCP-enabled network.

  2. #3 by shredninja on September 25, 2012 - 2:22 pm

    How to use this to change your ip over router (dlink) ?

  3. #4 by bill on November 18, 2012 - 7:56 pm

    thanks

  4. #5 by Jess on December 19, 2012 - 10:10 pm

    Mike – Thank you sooo much for posting this. Your website was the only batch file that worked on my computer! All the other sites forget to tell you about the folder setting change and they don’t break it down like you did. The way you explained it allowed me to fill in the blanks easily and it worked!!! I am so proud of myself and I owe it to you thank you!

  1. windows change ip script http mikebeach org 2012… | My Bookmarks