|
newaifi
初级用户
积分 154
发帖 67
注册 2006-10-31
状态 离线
|
『楼 主』:
实现 智能读取一个TXT文件某个段中信息。
想编写一个自动修改计算机名和IP。DNS等的BAT。。
重点在于能在一个TXT文件中找到对应网段中的计算机以分配IP地址。
比如TXT文件如下:
GateWay: 192.168.0.(?) // 0 网段机器的IP列表。
User001=1
User002=2
GateWay: 192.168.1.(?) // 1 网段机器的IP列表。
User003=3
User004=4
::: User004=4 表示 计算机名称为User004的机器IP尾数为4
如果现在我要分配的机器名称是User004 ,怎么让其自动识别自身所在的网段?
\\ 该功能我以用VBS实现..但我相信DOS下一定还是有解决办法的..
以下是我今天上午编写的一个要求输入计算机名称和网段数及网关尾数的BAT.
**************************************************
@cls
@color 2f & Title IP地址修改工具
@echo off
@echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
@echo ※请输入您要定义的计算机名称. ※
@echo ※ ※
@echo ※ (例:PC-01;User001;) ※
@echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
Set /p User=""
@cls
@echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
@echo ※请输入您当前使用的网段. ※
@echo ※ ※
@echo ※ (例:192.168.1.245,请输入1;192.168.0.245,请输入0;) ※
@echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
Set /p aidi2=""
@cls
@echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
@echo ※请输入你网关地址的最后一位数. ※
@echo ※ ※
@echo ※ (例:192.168.1.245,请输245;) ※
@echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
Set /p GateWay=""
@cls
Set NetMask=255.255.255.0
Set DNS1=61.153.177.196
Set DNS2=61.153.177.197
rem 如果您的DNS地址不是以上所示,请自行更改.
Set Aidi=192.168
IF Exist Name.ax Del Name.ax
Find /i "%User%" ip.ax >>Name.ax
For /f "skip=2 tokens=2 delims==\" %%A in (Name.ax) Do Set aidi3=%%A
@ipconfig /all >ipconfig.ax
@if exist name.pak del name.pak
@find "Ethernet adapter" ipconfig.ax>>name.pak
@for /f "skip=2 tokens=3,4 delims=: " %%A in (name.pak) do set Name=%%A %%B
@cls
@echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
@echo ※您的计算机名称是 "%User%" ※
@echo ※您的IP地址是 "%aidi%.%aidi2%.%aidi3%" ※
@echo ※您的子网掩码是 "%NetMask%" ※
@echo ※您的网关地址是 "%aidi%.%aidi2%.%GateWay%" ※
@echo ※您的DNS地址分配为 "%DNS1%,%DNS2%" ※
@echo ※ 当前网卡: "%Name%" ※
@echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
@echo ※ 确认无误后请按任意键执行修改操作.否则请停止该程序. ※
@pause >log.pak
@echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
@echo ※ ※
@echo ※ 程序正在执行操作,请稍候....... ※
@echo ※ ※
@echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
Reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName" /v ComputerName /t reg_sz /d %User% /f >log.pak
@netsh interface ip set address "%Name%" static %aidi%.%aidi2%.%aidi3% %NetMask% %aidi%.%aidi2%.%GateWay% 1 >log.pak
@netsh interface ip set dns "%Name%" static %DNS1% >log.pak
@netsh interface ip add dns "%Name%" %DNS2% >log.pak
@cls
@echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
@echo ※ 恭喜您!修改成功了. ※
@echo ※ ※
@echo ※ 该程序由韩和编写制作.您可以传播本程序,但请保留本版权信息! ※
@echo ※ ※
@echo ※ 按任意键退出程序 ※
@echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
@pause >log.pak
@if exist name.pak del name.pak
@if exist ipconfig.ax del ipconfig.ax
@if exist Name.ax del Name.ax
@if exist log.pak del log.pak
|
|
2006-10-31 03:18 |
|
|
utem999
初级用户
积分 135
发帖 54
注册 2006-9-10
状态 离线
|
|
2006-10-31 03:47 |
|
|
zerocq
中级用户
积分 458
发帖 196
注册 2006-10-5
状态 离线
|
『第
3 楼』:
刚写的,只在你给的txt内容里测试了
@echo off
set host=003
for /f "tokens=1-2 delims=:/" %%a in (test.txt) do (
@echo %%a|find "Gate">nul&&set gateway=%%b
@echo %%a|find "%host%">nul&&goto :gate
)
goto :eof
:gate
echo %host%所在网段%gateway%
pause
找出目标主机上边最近的一句gateway
LZ试下合不合适:)
[ Last edited by zerocq on 2006-10-31 at 04:20 AM ]
|
|
2006-10-31 04:14 |
|
|
newaifi
初级用户
积分 154
发帖 67
注册 2006-10-31
状态 离线
|
『第
4 楼』:
感谢回复 受益匪浅
待测试。。
希望大家不要抱旁观态度。讨论才有进步。
|
|
2006-10-31 22:55 |
|
|
newaifi
初级用户
积分 154
发帖 67
注册 2006-10-31
状态 离线
|
『第
5 楼』:
测试通过. 不过在下存在一个疑惑..
"语句":
For /f "tokens=1-2 delims=:/" %%c in (ip.ax) do (
@echo %%c|find /i "Gateway">nul&&Set Gateway=%%d
@echo %%c|find /i "%User%">nul&&Goto :Gate
)
Goto :eof
:Gate
@echo %Gateway%>Temp.ax
For /f "tokens=3 delims=./" %%e in (Temp.ax) do Set aidi2=%%e
如果我把语句替换成如下所显就提示出错..还望为兄解释.
For /f "tokens=1-2 delims=:/" %%c in (ip.ax) do (
@echo %%c|find /i "Gateway">nul&&Set Gateway=%%d
@echo %%c|find /i "%User%">nul&&@echo %Gateway%>Temp.ax
)
For /f "tokens=3 delims=./" %%e in (Temp.ax) do Set aidi2=%%
|
|
2006-11-2 02:31 |
|
|
newaifi
初级用户
积分 154
发帖 67
注册 2006-10-31
状态 离线
|
『第
6 楼』:
完整代码如下所示.帖出来供有需要的人使用.大家也可以拿去学习研究.
******************* Setip 主程序 部分 **********************
@cls
@echo off
@color 2f&@Title 计算机IP设置程序 v1.0
@echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
@echo ※请输入您要定义的计算机名称. ※
@echo ※ ※
@echo ※ (例:PC-01;User001;) ※
@echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
Set /p User=""
@cls
Set NetMask=255.255.255.0
Set DNS1=61.153.177.196
Set DNS2=61.153.177.197
rem 如果您的DNS地址不是以上所示,请自行更改.
Set Aidi=192.168
IF Exist Name.ax Del Name.ax
Find /i "%User%" ip.ax >>Name.ax
For /f "skip=2 tokens=2 delims==\" %%A in (Name.ax) Do Set aidi3=%%A
For /f "tokens=1-2 delims=:/" %%c in (ip.ax) do (
@echo %%c|find /i "Gateway">nul&&Set Gateway=%%d
@echo %%c|find /i "%User%">nul&&Goto :Gate
)
Goto :eof
:Gate
@echo %Gateway%>Temp.ax
For /f "tokens=3 delims=./" %%e in (Temp.ax) do Set aidi2=%%e
@ipconfig /all >ipconfig.ax
@if exist name.pak del name.pak
@find "Ethernet adapter" ipconfig.ax>>name.pak
@for /f "skip=2 tokens=3,4 delims=: " %%A in (name.pak) do set Name=%%A %%B
@cls
@echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
@echo ※您的计算机名称是 "%User%" ※
@echo ※您的IP地址是 "%aidi%.%aidi2%.%aidi3%" ※
@echo ※您的子网掩码是 "%NetMask%" ※
@echo ※您的网关地址是 "%GateWay%" ※
@echo ※您的DNS地址分配为 "%DNS1%,%DNS2%" ※
@echo ※ 当前网卡: "%Name%" ※
@echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
@echo ※ 确认无误后请按任意键执行修改操作.否则请停止该程序. ※
@pause >log.pak
@echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
@echo ※ ※
@echo ※ 程序正在执行操作,请稍候....... ※
@echo ※ ※
@echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
Reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName" /v ComputerName /t reg_sz /d %User% /f >log.pak
@netsh interface ip set address "%Name%" static %aidi%.%aidi2%.%aidi3% %NetMask% %Gateway% 1 >log.pak
@netsh interface ip set dns "%Name%" static %DNS1% >log.pak
@netsh interface ip add dns "%Name%" %DNS2% >log.pak
@cls
@echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
@echo ※ 恭喜您!修改成功了. ※
@echo ※ ※
@echo ※ 该程序由韩和编写制作.您可以传播本程序,但请保留本版权信息! ※
@echo ※ ※
@echo ※ 按任意键退出程序 ※
@echo ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
@pause >log.pak
@if exist name.pak del name.pak
@if exist ipconfig.ax del ipconfig.ax
@if exist Name.ax del Name.ax
@if exist log.pak del log.pak
@if exist temp.ax del temp.ax
************************ END *****************************
******************** ip.ax IP配制文件部分 ********************
Gateway:192.168.0.1
User001=1
User002=2
11-pc=66
.....
Gateway:192.168.1.1
User182=182
User183=183
12-pc=67
Gateway:192.168.3.1
BG001=1
BG002=2
BG003=3
// End .......
|
|
2006-11-2 02:34 |
|