|
jckjuc
初级用户
白小痴
积分 48
发帖 23
注册 2006-9-16
状态 离线
|
『楼 主』:
(已解决) 求助.3.29更新: 根据 主机名修改IP 的批处理
本人连续几天在各大网站和搜索下都没法得到答案。所以只有劳烦各位大侠帮
下小菜菜啦。
正题: :P
我想知道要怎样才能 根据预先设定的主机名 来更改IP?
比如我设定了 主机名是 001 的IP 是192.168.0.201
002 的IP 是192.168.0.202
如何实现???
不好意思,本人表达能力不是很好。:(
简单的就是说我设定好
001=192.168.0.201
002=192.168.0.202
003=192.168.0.3
004=192.168.0.4
005=192.168.0.5
....................
...
当我运行批处理文件后就会根据主机名而修改成对应的IP
关于 2 楼 everest79 大侠所写的好像不起作用。运行后一点改变都没有。
希望能说下使用方法。 而且网吧有500多台电脑,我要先把所有主机名和对应的IP的先写到批处理,等GHOST完后,运行批处理而根据主机名自动修改对应IP
而且 everest79 大侠的批处理也没有修改DNS 和备用DNS。
希望everest79 大侠和各位高手能不能再帮下忙?
下面附一个段修改主机名的批处理:
希望各位能接着下完成上面 根据主机名而修改成对应的IP
当我输入001 就要把IP修改成 192.168.0.201
当我输入003 就要把IP修改成 192.168.0.3
当我输入225 就要把IP修改成 192.168.1.25
(反正这个在批处理文档中先预设好了,到时根据主机名自动修改)
子掩码为 255.255.254.0
DNS均为 202.96.128.86
202.96.3128.166
特别注意:下面的批处理会自动在你输入的机号前加 “ gyq-“
@color c
@cls :::清屏
@echo ---------------------------------------------------
@set/p 机号= 请输入计算机号:
@echo ---------------------------------------------------
@echo Windows Registry Editor Version 5.00 >pc.reg
@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName] >>pc.reg
::::用变量""去替换实际的机器名
@echo "ComputerName"="gyq-%机号%" >>pc.reg
@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters] >>pc.reg
::::用变量"机号"去替换实际的机器名
@echo "NV Hostname"="gyq-%机号%" >>pc.reg
@echo "Hostname"="gyq-%机号%" >>pc.reg
regedit /s pc.reg
del PC.reg
[ Last edited by jckjuc on 2007-3-31 at 02:49 PM ]
|
|
2007-3-26 14:58 |
|
|
everest79
金牌会员
一叶枝头,万树皆春
积分 2564
发帖 1127
注册 2006-12-25
状态 离线
|
『第
2 楼』:
@echo off&set connectionname=本地连接&set gw=
for /f "skip=2 tokens=1,2 delims==" %%a in ('find /i "%computername%" %~nx0) do (
if not "%%a%%b" == "" (
netsh interface ip set address "%connectionname%" static %%b 255.255.255.0 %gw%)
)
goto :eof
以下为配置
computer001=192.168.1.1
...
此帖被 +5 点积分 点击查看详情 评分人:【 lxmxn 】 | 分数: +5 | 时间:2007-3-26 23:31 |
|
|
|
2007-3-26 22:23 |
|
|
jckjuc
初级用户
白小痴
积分 48
发帖 23
注册 2006-9-16
状态 离线
|
『第
3 楼』:
先谢谢。测试下。行了再来告诉大家。 谢了
|
|
2007-3-27 14:30 |
|
|
lxmxn
版主
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
『第
4 楼』:
先在单个主机上面执行netsh命令,看看有没有效果。
|
|
2007-3-28 01:51 |
|
|
jckjuc
初级用户
白小痴
积分 48
发帖 23
注册 2006-9-16
状态 离线
|
『第
5 楼』:
详细怎么操作啊?不是很懂。能否清晰点,最好是把批处理写出来。
或是有个仔细的思路说明。让我自己研究。先谢
|
|
2007-3-28 01:54 |
|
|
lxmxn
版主
积分 11386
发帖 4938
注册 2006-7-23
状态 离线
|
『第
6 楼』:
先试试这个:netsh interface ip set address=<ip> mask=<smIP>
|
|
2007-3-28 02:31 |
|
|
jckjuc
初级用户
白小痴
积分 48
发帖 23
注册 2006-9-16
状态 离线
|
『第
7 楼』:
还是不行。管理员和各位版主、高手能否再给多点提示?最好详细点的。
真的找了很长时间都找不到。才会麻烦大家的。谢了
|
|
2007-3-28 11:53 |
|
|
jckjuc
初级用户
白小痴
积分 48
发帖 23
注册 2006-9-16
状态 离线
|
『第
8 楼』:
可能大家还不是很明白我的表达意思。不好意思,本人表达能力一点都不好。
其实是很简单,就是有N台电脑,我先把 什么主机名对应什么IP 写好。
等到GHOST后 再改一下主机名,然后批处理就会根据主机名而查找出我预先写好在批处理中的对应IP 修改
[ Last edited by jckjuc on 2007-3-28 at 12:07 PM ]
|
|
2007-3-28 11:54 |
|
|
chenall
银牌会员
积分 1276
发帖 469
注册 2002-12-23 来自 福建泉州
状态 离线
|
『第
9 楼』:
我来贴一个吧,请根据需要进行修改.
由于使用的中文的变量,所以应该很好理解.
当然为了兼容性,你可以自己修改为英文变量.
补一下,由于你没有提供网关,有可能是忘了.或者是不需要设定这个网关.
如果不需要只需将相应的行删除即可.
不设网关set 网关=XXX这一行和
"%网关% 1"字符可以删除
Quote: |
- @echo off
- set 接口名称=本地连接
- set 子网掩码=255.255.254.0
- set DNS1=202.96.128.86
- set DNS2=202.96.128.166
- set 网关=192.168.0.201
- set 本机IP=
- for /f "usebackq tokens=2 delims==" %%i in (`type 设定文件^|find /i "%computername:~-3%"`) do set 本机IP=%%i
- if not defined 本机IP goto :没有设定
- echo %time% 正在设定 %接口名称%
- echo 本机IP: %本机IP%
- echo 子网: %子网掩码%
- echo 网关: %网关%
- echo DNS1: %DNS1%
- ECHO DNS2: %DNS2%
- netsh interface ip set address "%接口名称%" static %本机IP% %子网掩码% %网关% 1
- netsh interface ip set dns "%接口名称%" static %DNS1%
- netsh interface ip add dns "%接口名称%" %DNS2%
- GOTO :EOF
- :没有设定
- echo.
- echo.
- echo %time% 出错了!在设定文件中找不到本机对应的IP地址.
- pause
CHENALL发表于: 2007-03-28 01:58 |
|
[ Last edited by chenall on 2007-3-28 at 03:12 PM ]
|
QQ:366840202
http://chenall.net |
|
2007-3-28 15:09 |
|
|
jckjuc
初级用户
白小痴
积分 48
发帖 23
注册 2006-9-16
状态 离线
|
『第
10 楼』:
谢谢 chenall兄弟, 先自己试下.不行再来麻烦大家 .... 谢谢
|
|
2007-3-29 11:35 |
|
|
jckjuc
初级用户
白小痴
积分 48
发帖 23
注册 2006-9-16
状态 离线
|
『第
11 楼』:
9楼的 chenall 大侠的帮助好像让我非常接近成功了.可就是看了很久,测试了也不少时间还是搞得不是很明白.
能否再一整段命令行都写出来看下. 就是我预先设置的IP应该在那里设置?第8行那句命令也搞不懂.(本人真的很菜)
好人就做底了吧.好吗? 呵呵...... 先谢 各位大侠也要帮下忙啊. 再谢下
|
|
2007-3-30 03:01 |
|
|
chenall
银牌会员
积分 1276
发帖 469
注册 2002-12-23 来自 福建泉州
状态 离线
|
『第
12 楼』:
能否再一整段命令行都写出来看下. 就是我预先设置的IP应该在那里设置?第8行那句命令也搞不懂.(本人真的很菜)
是指什么?
预先设置的IP应该放在另一个文件中.文件名可以自定.
比如文件名为 IPC.TXT
内容类似
001=192.168.0.201
002=192.168.0.202
003=192.168.0.3
004=192.168.0.4
005=192.168.0.5
只需更改第8行的"设定文件"为你的文件名即可,这里就改为 "IPC.TXT"
这个设定文件要和批处理放在同一个目录下.
关于第8行的简单解释.
for /f "usebackq tokens=2 delims==" %%i in (`type 设定文件^|find /i "%computername:~-3%"`) do set 本机IP=%%i
从 设定文件 中查找计算机名的后3位.(也就是00X之类的)然后将查找到的内容以=分附隔的第二段的值设为变量 本机IP
比如计算机名为gyq-002 设定文件里面也有002=192.168.0.202
就是在设定文件里面找002,就找到这一行 002=192.168.0.202
以=分隔的第二段就是192.168.0.202
|
QQ:366840202
http://chenall.net |
|
2007-3-30 05:38 |
|
|
jckjuc
初级用户
白小痴
积分 48
发帖 23
注册 2006-9-16
状态 离线
|
『第
13 楼』:
感谢 chenall兄弟的多次相助。 还有通过远程协助帮助解决问题。
感谢DOS联盟论坛里的成员。谢谢各位管理员和版主。
再次谢谢chenall
|
|
2007-3-31 14:51 |
|