中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-08 03:36
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请大家帮个忙写个批处理,第一个写出来送5个Q币 查看 734 回复 7
楼 主 请大家帮个忙写个批处理,第一个写出来送5个Q币 发表于 2008-04-14 18:14 ·  中国 浙江 温州 电信
初级用户
积分 20
发帖 8
注册 2008-04-14 17:47
18年会员
UID 115883
性别 男
状态 离线
我是新手,请大家帮个忙写个批处理,第一个写出来的我给他QQ充5个Q币
我知道高手不在乎Q币,也是我一点小意思

批处理的意思如下,


先检测本机的MAC
然后检测C:\mac.txt有没有本机MAC(注mac.txt里面有100条MAC信息)
如果有网关改成192.168.0.250
如果没有网关改成192.168.0.1
2 试试这个: 发表于 2008-04-14 19:35 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
不适合多网卡
@echo off
for /f "delims=:" %%i in ('ipconfig ^| findstr "Ethernet"') do set var=%%i
for /f "delims=: tokens=2" %%i in ('ipconfig /all ^| findstr "Physical"') do (
set str=%%i
call :lp %%str%%
)
pause&goto :eof
:lp
find "%str%" mac.txt>nul 2>nul
if %errorlevel% equ 1 (netsh interface ip set address "%var:~17%" gateway=192.168.0.1 gwmetric=1) else (netsh interface ip set address "%var:~17%" gateway=192.168.0.250 gwmetric=1)
goto :eof


[ Last edited by zw19750516 on 2008-4-14 at 07:54 PM ]
批处理之家新域名:www.bathome.net
3 你QQ多少 发表于 2008-04-14 19:43 ·  中国 浙江 温州 电信
初级用户
积分 20
发帖 8
注册 2008-04-14 17:47
18年会员
UID 115883
性别 男
状态 离线
你QQ多少 如果好用我给你充进去
4 发表于 2008-04-14 19:44 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
不用了,好不好用都告诉我就可以了,不好用我再改。 
批处理之家新域名:www.bathome.net
5 2楼的我试过了,行是行, 发表于 2008-04-14 19:50 ·  中国 浙江 温州 电信
初级用户
积分 20
发帖 8
注册 2008-04-14 17:47
18年会员
UID 115883
性别 男
状态 离线
2楼的我试过了,行是行,但有必须在没有配置网关的前提下,如果网关存在的话,就不能配置了
6 发表于 2008-04-14 19:53 ·  中国 江苏 苏州 电信
银牌会员
★★★
积分 1,608
发帖 780
注册 2007-10-07 10:19
18年会员
UID 99089
性别 男
状态 离线
你没配置网关那设定网关地址有何用?
7 发表于 2008-04-14 19:54 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
可以的,开始我写错了,现在已将add改成set了,没问题了。
批处理之家新域名:www.bathome.net
8 这是我重新编译过的,根据MAC修改IP,为我所用中。 发表于 2008-04-14 21:17 ·  中国 浙江 嘉兴 平湖市 电信
初级用户
★★
积分 157
发帖 67
注册 2007-05-13 11:03
19年会员
UID 88378
性别 男
状态 离线
注意:多网卡识别未加入,因为多网卡环境不多,所以没有加,我想只要努力,一定可以为我所用的。

@echo off
title AutoIP
ping -n 1 192.168.0.252>nul||goto check_go
if exist \\192.168.0.252\data\ArpBinding.ini COPY \\192.168.0.252\data\ArpBinding.ini %CD%\ArpBinding.ini /y & goto check_go
if exist wget.exe wget -q -N ftp://192.168.0.252/data/ArpBinding.ini

:check_go
cls
set zwym=255.255.255.0
set Gateway=192.168.0.1
set dns1=220.189.127.106
set dns2=192.168.0.1
set dns3=220.189.127.108
Set PC_IP=0.0.0.0
Set IP=0.0.0.0
set mac=00-00-00-00-00-00
echo %time:~0,8% 检测网络设备...
for /f "tokens=16" %%i in ('ipconfig /all^| find /i "Host Name"') do set pcName=%%i
for /f "tokens=15" %%i in ('ipconfig ^| find /i "ip address"') do set PC_IP=%%i
for /f "tokens=12" %%i in ('ipconfig /all^| find /i "Physical Address"') do set mac=%%i
::读取网维大师ArpBinding.ini
for /f "tokens=1 delims==" %%i in ('type ArpBinding.ini^|find /i "%mac%"') do set IP=%%i
::读取普通的ARP绑定批处理文件
::for /f "tokens=3" %%i in ('find /i "%mac%" "mac.bat"') do set IP=%%i

if %IP%==0 goto ipend
set Ipx=%IP:~10,3%
if %Ipx% lss 2 goto Ipx_end
if %Ipx% geq 254 goto Ipx_end
if %Ipx% lss 10 set a=00& goto Ipx_config
if %Ipx% lss 100 set a=00& set /a a=%a%-0& goto Ipx_config
if %Ipx% lss 255 set a=& goto Ipx_config
:Ipx_config
set Ipx_reg=%a%%Ipx%
set LISTPCNAME=A%Ipx_reg%
set mac1=%mac:~0,2%
set mac2=%mac:~3,2%
set mac3=%mac:~6,2%
set mac4=%mac:~9,2%
set mac5=%mac:~12,2%
set mac6=%mac:~15,2%
set wmicMac=%mac1%:%mac2%:%mac3%:%mac4%:%mac5%:%mac6%

::echo %time:~0,8% 本机 name:%pcName% ^| Mac:%Mac% ^| IP:%PC_IP%
::echo %time:~0,8% 列表 name:%LISTPCNAME% ^| Mac:%Mac% ^| IP:%ip%

if %pcName%==%LISTPCNAME% goto CHECKIP
WMIC computersystem where Name="%pcName%" call Rename Name="%LISTPCNAME%" >nul
reg add HKLM\system\currentcontrolset\control\computername\computername\ /v computername /t reg_sz /d "%LISTPCNAME%" /f >nul
reg add HKLM\system\currentcontrolset\services\tcpip\Parameters\ /v "NV Hostname" /t reg_sz /d "%LISTPCNAME%" /f >nul
echo Windows Registry Editor Version 5.00 >%Ipx_reg%.reg
echo >>%Ipx_reg%.reg
echo "VirtualNetworkNumber"=dword:00000%Ipx_reg% >>%Ipx_reg%.reg
echo >>%Ipx_reg%.reg
echo "VirtualNetworkNumber"=dword:00000%Ipx_reg% >>%Ipx_reg%.reg
regedit /s %Ipx_reg%.reg
del %Ipx_reg%.reg

:CHECKIP
if %PC_IP%==%IP% goto IP1~IP2
echo %time:~0,8% 正在设置本机IP...请稍候
WMIC NICCONFIG WHERE MACAddress="%wmicMac%" call EnableStatic("%ip%"),("%zwym%") >nul
WMIC NICCONFIG WHERE MACAddress="%wmicMac%" call SetGateways("%Gateway%") >nul
WMIC NICCONFIG WHERE MACAddress="%wmicMac%" call SetDNSServerSearchOrder("%dns1%", "%dns2%", "%dns3%") >nul
echo %time:~0,8% 本机IP设置成功!
for /f "tokens=2 delims=&" %%i in ('devcon find pci\* ^| findstr "Ethernet"') do devcon DISABLE *%%i*> nul
for /f "tokens=2 delims=&" %%i in ('devcon find pci\* ^| findstr "Network"') do devcon DISABLE *%%i*> nul
for /f "tokens=2 delims=&" %%i in ('devcon find pci\* ^| findstr "Ethernet"') do devcon ENABLE *%%i*> nul
for /f "tokens=2 delims=&" %%i in ('devcon find pci\* ^| findstr "Network"') do devcon ENABLE *%%i*> nul
echo %time:~0,8% 正在重启网卡...请稍候
ping -n 5 127.1>nul
for /f "tokens=15" %%i in ('ipconfig ^| find /i "ip address"') do set PC_IP=%%i
echo %time:~0,8% IP:%PC_IP%
set m=31
call :echo

:IP1~IP2
echo %time:~0,8% 检测到需设置的IP信息与当前使用的相同,程序退出!
goto ipend

:echo
set /a m-=1
echo %time:~0,8% 剩余 %m% 秒后重启系统!
ping -n 2 127.1>nul
if %m% lss 1 shutdown -r -t 0 && goto ipend
goto echo

:ipend

[ Last edited by tvzml on 2008-4-14 at 09:21 PM ]
论坛跳转: