中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-24 01:09
47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,274 会员排行
DOS批处理 & 脚本技术(批处理室) » 实现 智能读取一个TXT文件某个段中信息。
可打印版本  1,474 / 5
第1楼 newaifi 发表于 2006-10-31 03:18
初级用户 发帖 67 积分 154
实现 智能读取一个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
第2楼 utem999 发表于 2006-10-31 03:47
初级用户 发帖 54 积分 135
好像改不了
XP SP2
第3楼 zerocq 发表于 2006-10-31 04:14
中级用户 发帖 196 积分 458
刚写的,只在你给的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 ]
第4楼 newaifi 发表于 2006-10-31 22:55
初级用户 发帖 67 积分 154
感谢回复 受益匪浅

待测试。。

希望大家不要抱旁观态度。讨论才有进步。
第5楼 newaifi 发表于 2006-11-02 02:31
初级用户 发帖 67 积分 154
测试通过. 不过在下存在一个疑惑..
"语句":

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=%%
第6楼 newaifi 发表于 2006-11-02 02:34
初级用户 发帖 67 积分 154
完整代码如下所示.帖出来供有需要的人使用.大家也可以拿去学习研究.

******************* 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 .......
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023