[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[网络连接] [已解决]小白,求一个修改IP的批处理。

本帖最后由 yyjeje 于 2014-9-19 13:09 编辑

我有开机维护通道,现在要批量修改一批机器的IP,把现有IP最后一位都增加100就可以。
如192.168.0.1 变成192.168.0.101……
   192.168.0.50变成192.168.0.150


获得当前机器的IP,然后将得到的IP最后一位加100得到新IP,然后更改当前机器旧IP为新得到的IP。

xiexieixiexi!!

TOP

回复 15# Linuxer


    谢谢 可以了。

我自己也组合了一段代码出来,效果差不多
  1. FOR /F "tokens=2*" %%i IN ('ipconfig/all^|find /i "Ethernet adapter "') DO set name=%%j
  2. FOR /F "tokens=1* delims=:" %%i in ("%name%") do set 网卡名称=%%i
  3. for /f "tokens=2 delims=:" %%a in ('ipconfig ^| find/i "ip address"')do for /f "tokens=4 delims=." %%b in ("%%a") do
  4. set ipa=%%b
  5. set /a aa=ipa+100
  6. set ipb=192.168.0.%aa%
  7. netsh -c interface ip set address name="%网卡名称%" source=static addr=%ipb% mask=255.255.255.0
  8. pause
复制代码
再次感谢。

TOP

回复 13# yyjeje

win7识别的是“IPv4 地址“
XP里边是"ip address"

用下边的试试。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=2 delims=:" %%i in ('ipconfig ^| findstr /i "ip address"') do (set ip=%%i)
  4. set ip_1=!ip:.= !
  5. call :ip_addr !ip_1!
  6. goto :eof
  7. :ip_addr
  8. set /a ip_2=%4+100
  9. set ip_3=%1.%2.%3.!ip_2!
  10. netsh interface ip set address "本地连接" static %ip_3% 255.255.255.0
  11. pause
复制代码
1

评分人数

问题解决后,请在标题前面注明[已解决],并给回答者加分——化繁为简,提高工作效率!

TOP

回复 12# Batcher


    嗯,如果有线无线都开着,或者有虚拟机网卡,都会查出多个地址。还有什么命令可以更准确的或得IP呢?
看楼主的说明,应该基本都是一个ip的了。
问题解决后,请在标题前面注明[已解决],并给回答者加分——化繁为简,提高工作效率!

TOP

回复 11# Linuxer


    我是XP系统 机器IP是192.168.0.20

运行后提示  ....100 不是 addr 的可接受值。

去掉@echo off
后发现,在set /a 这里 有问题 没有得出 ip_3


我这里百度了一段代码 能得到IP最后一位数.
for /f "tokens=2 delims=:" %%a in ('ipconfig ^| find/i "ip address"')do for /f "tokens=4 delims=." %%b in ("%%a") do echo %%b

不过我自己怎么加代码都出错 小白没法啊.  这个%%b 怎么加100 ,  变成192.168.0.new

TOP

回复 11# Linuxer


    ipconfig有可能返回多条IPv4的记录
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 10# Batcher


    啊,原来如此。。我在for后边加一个goto :eof退出这样就ok了。
另外,我在for里只执行set设置ip的命令,其他几句都搬到for外边,是不是和在for里边没区别?没什么影响的吧?我测试结果是一样的。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=2 delims=:" %%i in ('ipconfig ^| findstr /i "IPv4"') do (set ip=%%i)
  4. set ip_1=!ip:.= !
  5. call :ip_addr !ip_1!
  6. goto :eof
  7. :ip_addr
  8. set /a ip_2=%4+100
  9. set ip_3=%1.%2.%3.!ip_2!
  10. netsh interface ip set address "本地连接" static %ip_3% 255.255.255.0
  11. pause
复制代码
问题解决后,请在标题前面注明[已解决],并给回答者加分——化繁为简,提高工作效率!

TOP

回复 9# Linuxer


    for命令执行完毕以后会继续往下执行 :ip_addr 那一段,所以for命令结束之后需要有个 goto 跳过 :ip_addr
1

评分人数

    • Linuxer: 一语惊醒梦中人技术 + 1
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 Linuxer 于 2014-9-18 14:21 编辑

回复 8# Batcher


    我修改了,但是现在代码echo !ip_3!测试正常,但是后边又会多执行一次,不知道是怎么回事。。
附件: 您需要登录才可以下载或查看附件。没有帐号?注册
问题解决后,请在标题前面注明[已解决],并给回答者加分——化繁为简,提高工作效率!

TOP

回复 6# Linuxer


不要把 :ip_addr 的那一段放在 for 循环内部
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 3# yyjeje


    你看下6楼代码能否实现你的要求。
问题解决后,请在标题前面注明[已解决],并给回答者加分——化繁为简,提高工作效率!

TOP

本帖最后由 Linuxer 于 2014-9-18 15:31 编辑

回复 5# Batcher


   嗯,主要是前边截取字符,一时没想出怎么弄。
参考了下之前的帖子,写了一段,还请batcher帮我看看对不对,有没有哪里写的不好,我测试是可以用了。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=2 delims=:" %%i in ('ipconfig ^| findstr /i "IPv4"') do (
  4. set ip=%%i
  5. set ip_1=!ip:.= !
  6. call :ip_addr !ip_1!
  7. )
  8. goto :eof
  9. :ip_addr
  10. set /a ip_2=%4+100
  11. set ip_3=%1.%2.%3.!ip_2!
  12. netsh interface ip set address "本地连接" static %ip_3% 255.255.255.0
  13. pause
复制代码
call命令的调用方法参考了if_exist版主的思路:
http://www.bathome.net/redirect. ... 8&fromuid=67350
问题解决后,请在标题前面注明[已解决],并给回答者加分——化繁为简,提高工作效率!

TOP

回复 4# Linuxer


    试试 netsh 命令
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# CrLf


    他是想直接修改IP的。我理解是这样,先获取本机IP的最后一位,然后加100,组成新的IP,再修改成本机的IP。不过我想不出来咋写。
问题解决后,请在标题前面注明[已解决],并给回答者加分——化繁为简,提高工作效率!

TOP

返回列表