| 
 
newaifi 
初级用户
 
  
 
  
  
积分 154 
发帖 67 
注册 2006-10-31 
状态 离线
 | 
『楼 主』:
 实现 智能读取一个TXT文件某个段中信息。
 
使用 LLM 解释/回答一下
  
想编写一个自动修改计算机名和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 楼』:
 
 
使用 LLM 解释/回答一下
  
刚写的,只在你给的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 
状态 离线
 | 
 | 
  2006-10-31 22:55 | 
  
 | 
 | 
 
newaifi 
初级用户
 
  
 
  
  
积分 154 
发帖 67 
注册 2006-10-31 
状态 离线
 | 
『第 5 楼』:
 
 
使用 LLM 解释/回答一下
  
测试通过. 不过在下存在一个疑惑.. 
"语句": 
 
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 楼』:
 
 
使用 LLM 解释/回答一下
  
完整代码如下所示.帖出来供有需要的人使用.大家也可以拿去学习研究. 
 
******************* 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 | 
  
 |