Board logo

标题: [已结]想做个改IP的批处理请问如何实现 [打印本页]

作者: xlbt168     时间: 2006-10-24 04:14    标题: [已结]想做个改IP的批处理请问如何实现

这是在DOS下的命令
netsh
netsh>interface
netsh interface>ip
netsh interface ip>set address name="本地连接 1" source=static addr=192.168.0.75 mask=255.255.255.0
[ Last edited by HAT on 2008-12-10 at 12:34 ]
作者: lxmxn     时间: 2006-10-24 04:31

  类似的帖子在论坛里面已经很多了,多搜索以下。

  修改\添加\备份电脑IP地址

作者: xypcmac     时间: 2006-10-24 04:48
楼上所提供的那个帖子

所能做到的、方便性、容错性。我个人觉得都非常有限。
作者: xypcmac     时间: 2006-10-24 04:53    标题: 如果可以做成比较通用的就好啦!

附件 1: ok.jpg (2006-10-24 04:53, 68.12 K, 下载附件所需积分 1点 ,下载次数: 6)



作者: xypcmac     时间: 2006-10-24 04:55
现有的一些难点就是如何判断输入的是否标准的IP地址,然后进行设置
作者: electronixtar     时间: 2006-10-24 05:07
Vista里已经实现了多套上网方案了
作者: xypcmac     时间: 2006-10-24 05:15
可以提取出来在其他系统用吗?如果不行,现阶段也没有什么看头哦
作者: lxmxn     时间: 2006-10-24 05:23


  Quote:
Originally posted by xypcmac at 2006-10-24 05:15:
可以提取出来在其他系统用吗?如果不行,现阶段也没有什么看头哦


  提取什么?

作者: xypcmac     时间: 2006-10-24 05:27
6 楼所说的方案啊
作者: namejm     时间: 2006-10-24 06:32


  Quote:
Originally posted by xypcmac at 2006-10-24 04:55:
现有的一些难点就是如何判断输入的是否标准的IP地址,然后进行设置

  判断是否是标准的IP地址,可以使用如下代码:
@echo off
:begin
cls
set input=
set /p input=请输入IP:
echo %input%|findstr "^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*$">nul||goto fail
set _input=%input:.= %
call :check %_input%

:check
if "%4"=="" goto fail
for %%i in (%1 %2 %3 %4) do (
    if %%i gtr 255 goto fail
)
cls
echo %input% 是正确的IP
echo.
pause
goto begin

:fail
cls
echo %input% 是错误的IP
echo.
pause
goto begin
  另外,4F的IP地址显示有误,1921.68.……?

[ Last edited by namejm on 2006-10-24 at 08:13 AM ]
作者: xypcmac     时间: 2006-10-24 07:17
192.168.x.x 意思就是程序要求输入后面的两个字节。x=0-254 或 x=1-254

因为有人喜欢用 192.168.0.x,有人喜欢用 192.168.1.x 这样形式的IP地址

所以.......干脆就合并成一个,然后按自己喜好输入了
作者: namejm     时间: 2006-10-24 07:22
  我说的是 1921.68.…… 的格式错了,而没有说你 192.168.x.x 的格式是错的,请检查一下吧,应该是笔误所致。
作者: xypcmac     时间: 2006-10-24 07:25
多谢!指出显示错误!程序没错,显示错误........

另:namejm 版主的 检测IP地址可用。
作者: xypcmac     时间: 2006-10-24 07:32


  Quote:
Originally posted by namejm at 2006-10-24 06:32:

  判断是否是标准的IP地址,可以使用如下代码:
[code]
@echo off
:begin
cls
set input=
set /p input=请输入IP:
echo %input%|findstr "^[0-9]*\.[0-9]*\.[0-9]*\. ...

之前用的是简单的字符过滤:

echo %ipadd%|findstr "^[0-9.]*$">nul || goto all_err

所以也没什么用
作者: namejm     时间: 2006-10-24 08:12
  echo %ipadd%|findstr "^[0-9.]*$">nul || goto all_err 语句如果不配合其他检测语句使用的话,会把 1. 或者 1.. 或者 1.2.3.4.5. 之类的输入当作正确的IP,而10F的代码检测更严格更全面,不会出现这个错误。
作者: xypcmac     时间: 2006-10-24 08:39
echo %input%|findstr "^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*$">nul||goto fail

我感觉换成
echo %input%|findstr "^[1-9]*\.[1-9]*\.[0-9]*\.[0-9]*$">nul||goto fail

这样可能更好些,不然,输入 0.0.0.0 也会是正确的IP地址,但是这不是我们需要的
作者: vkill     时间: 2006-10-24 09:05
学习这个 findstr 的用法了
作者: airstop     时间: 2008-9-10 23:31
受教了,都是高手来着
作者: rs369007     时间: 2008-12-10 12:02
@echo off
for /f "delims=: tokens=2" %%b in ('ipconfig/all^|find /i "Default Gateway"') do set gateway=%%b
for /f "delims=: tokens=2" %%c in ('ipconfig/all^|find /i "Subnet Mask"') do set mask=%%c
echo     默认网关: %gateway%  
echo.
echo     子网掩码: %mask%
echo.
set /p ip=输入手动设定ip地址(请确保输入ip与网关在同一网段):
cls
netsh interface ip set address "本地连接" static %ip% 255.255.255.0&&echo 手动设定ip成功.
ping -n 4 -w 1000 127.1>nul