[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[网络连接] BAT批处理怎样自动设置局域网IP?

局域网内不同的电脑设置指定IP和计算机名(操作者选择),批处理调用TXT 文本内容:
  1.   张三 192.168.0.10
  2.             李四 192.168.0.11  
  3.             王五 192.168.0.12  
  4.           (以下略...)
复制代码
批处理能适应XP或Win7等不同系统

本帖最后由 marya 于 2014-1-8 23:35 编辑

回复 7# 522235677

谢谢帮助
参考你的与别人的成果,现在的代码基本满意!

找到一个不错的参考代码:
  1. @echo off
  2. call:which dllcall.exe || (
  3. echo 沒有外部命令"dllcall.exe", 請在"http://vinoca.org/files/dllcall"下載此程序並放在"C:\Windows"下。
  4. pause &&exit)
  5. title IP切換&&color F0
  6. mode con: cols=48 lines=20
  7. setlocal enabledelayedexpansion
  8. dllcall IsUserAnAdmin,Shell32.dll-
  9. if '%errorlevel%' EQU '0' (  
  10. echo 需管理員權限才能切換IP。
  11. dllcall ShellExecuteA,,"RunAs","%~0",,,10,shell32.dll
  12. exit)
  13. for /f "delims=:" %%i in ('findstr /NB "^:config context" "%~0"')  do set config_label_num=%%i
  14. :loop
  15. cls&&echo.
  16. set opt_char=&&set option=
  17. call:colstr 0 0 "o" 0 2 0
  18. call:colstr 00d1 0 "按序號選擇" 0 0 2
  19. for /F "delims=" %%i in ('more +%config_label_num% "%~0" ^| findstr /B ":ip[0-9][0-9]*.*@.*"') do (
  20. for /F "tokens=1 delims=@" %%j in ("%%i") do set id=%%j &&set id=!id:~3,2!
  21. for /F "tokens=2 delims=@" %%j in ("%%i") do set name=%%j
  22. set opt_char=!opt_char! !id!
  23. call:colstr 0 0 "o" 0 2 0
  24. call:colstr 00FC 0 !id! 0 0 0
  25. echo !name!
  26. )
  27. echo.
  28. set /p option=輸入序號:
  29. for %%i in (%opt_char% h l q) do if "%%i" == "%option%" goto ip%option%
  30. cls
  31. color Fc
  32. echo.
  33. echo.
  34. echo.
  35. echo                  请按提示输入。
  36. dllcall Sleep,700,kernel32.dll-
  37. color F0
  38. goto loop
  39. :doit
  40. if "%mode%" == "dhcp" (
  41. netsh interface ip set address %CARD% dhcp
  42. netsh interface ip set dnsservers %CARD% dhcp
  43. )
  44. if "%mode%" == "static" (
  45. netsh interface ip set address %CARD% static %LIP% %MSK% %GW%
  46. if not "%DNS%" == "" netsh interface ip set dnsservers %CARD% static %DNS% primary no
  47. )
  48. if "%mode%" == "IEProxy" (
  49. if not "%ProxyServer%" == "" reg add %REG_IE_PROXY_SET% /v ProxyServer /d "%ProxyServer%" /f
  50. if not "%ProxyOverride%" == "" reg add %REG_IE_PROXY_SET% /v ProxyOverride /t REG_SZ /d "%ProxyOverride%" /f
  51. set REG_IE_PROXY_SET="HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
  52. for /f "tokens=3 delims= " %%i in ('reg query !REG_IE_PROXY_SET! /v ProxyEnable') do (
  53.     if "%%i" equ "0x0" (
  54.        reg add !REG_IE_PROXY_SET! /v ProxyEnable /t REG_DWORD /d 1 /f
  55.        call:msgBox 已启用代理
  56. )
  57. if "%%i" equ "0x1" (
  58.        reg add !REG_IE_PROXY_SET! /v ProxyEnable /t REG_DWORD /d 0 /f
  59. call:msgBox 已停止代理
  60. )
  61. )
  62. dllcall InternetSetOptionA,,0x000025,,,wininet.dll;InternetSetOptionA,,0x000027,,,wininet.dll-
  63. exit
  64. )
  65. )
  66. call:msgBox "IP 設置完成"
  67. exit
  68. :iph
  69. cls
  70. echo.
  71. echo 可用參數:h,l
  72. echo.
  73. pause
  74. goto loop
  75. :ipl
  76. cls
  77. echo.
  78. echo 本機網卡列表:
  79. pause
  80. goto loop
  81. :ipq
  82. exit
  83. :: {{{
  84. rem /*--------- colstr 函数 -------------
  85. :Colstr <attr> <sp> <"str"> <bk> <sp> <enter>
  86. for %%a in (+%2 +%4 +%5 +%6) do (
  87.    if "%%a"=="+" echo 控制参数不能为空&exit/b
  88.    if %%a lss +0 echo 参数越界-&exit/b
  89.    if %%a geq +a echo 参数越界+&exit/b)
  90. if %3 == "" echo 字符串不能为空&exit/b
  91. pushd %tmp%&setlocal ENABLEEXTENSIONS
  92. if exist "%~3?" del/a/q "%~3?">nul 2>nul
  93. if %2 gtr 0 call:%0_bs %2 sp " "&call set/p=%%sp%%<nul
  94. if %4 gtr 0 (call:%0_bs %4 bk "") else set "bk="
  95. call:%0_bs %5 sp " "
  96. set/p=%bk%%sp%<nul>"%~3"&findstr /a:%1 .* "%~3?" 2>nul
  97. if not %6 equ 0 for /l %%a in (1 1 %6)do echo.
  98. endlocal&popd&goto:eof
  99. :Colstr_bs
  100. set "p="&for /l %%a in (1 1 %1)do call set "p=%%p%%%~3"
  101. set "%2=%p%"&goto:eof
  102. rem ------------------------------------*/
  103. Rem 檢測命令是否存在
  104. :WHICH
  105. SETLOCAL&PATH %PATH%;%~dp0;%cd%
  106. if "%~$PATH:1"=="" exit /b 1
  107. exit /b 0
  108. Rem 顯示一個消息對話框
  109. :msgBox
  110. dllcall MessageBoxA,,%1,"提示",0x40,user32.dll-
  111. exit /b
  112. :: }}}
  113. :: 使用說明:
  114. :: 在 :config context 之後的行中填寫需要切換的IP地址項,
  115. :: :ip1 @ name 爲必填項
  116. :: goto doit 爲必填項
  117. :: 將 :ip1 @ name 中的 @ 替換爲其它符號即可隱藏此地址項。
  118. :: :ip1 @ name 中ip後面數字最多爲兩位
  119. :: 已預設4種切換模式(mode),
  120. :: 1. 動態(dhcp)  2. 静态(static)  3. 啓用/禁用IE代理(IEProxy)
  121. :config context
  122. :ip1 @ Wi-Fi set DHCP
  123. set mode=dhcp
  124. set card="Wi-Fi"
  125. goto doit
  126. :ip3 @ 公司網
  127. set mode=static
  128. set CARD="Wi-Fi"
  129. set LIP=10.10.10.100
  130. set MSK=255.255.240.0
  131. set GW=10.10.10.1
  132. set DNS=10.10.10.10
  133. :: 附加命令可直接寫這裏
  134. netsh wlan connect name=AP1 interface=%CARD%
  135. goto doit
  136. :ip6 ! 機房維護
  137. set mode=static
  138. set CARD="以太网"
  139. set LIP=10.228.3.3
  140. set MSK=255.255.255.192
  141. goto doit
  142. :ip7 ! 建立熱點
  143. ::不使用預設模式,自定義多個命令
  144. ::netsh wlan set hostednetwork mode=allow ssid=8 key=12345678
  145. netsh wlan start hostednetwork
  146. ::netsh wlan stop hostednetwork
  147. goto doit
  148. :ip8 @ 啓用/禁用IE代理
  149. set mode=IEProxy
  150. ::set ProxyServer=23.333.22.33:7080
  151. ::set ProxyOverride="192.168.*;*.xxx.com;<local>"
  152. goto doit
复制代码

TOP

给个代码就是给你参考,谁有时间帮你把代码写的好好的。要靠自己

TOP

参考别人的改动一下:
  1. @echo off & setlocal ENABLEDELAYEDEXPANSION
  2. echo 根据你的姓名输入编号并按下回车键
  3. @set INTERFACE=本地连接
  4. set MASK=255.255.255.0
  5. set GATEWAY=192.168.0.1
  6. set DNS1=202.96.128.86
  7. set DNS2=202.96.134.33
  8. set n=0
  9. for /f "tokens=1,2" %%a in (name.txt) do (
  10. set /a n+=1
  11. echo !n!.%%a
  12. )
  13. set n=0
  14. set /p choice=输入编号:
  15. for /f "tokens=1,2" %%a in (name.txt) do (
  16. set /a n+=1
  17. if "!n!"=="%choice%" (
  18. wmic computersystem where "caption='%ComputerName%'" call rename %%a
  19. netsh interface ip set address "%INTERFACE%" static %%b %MASK% %GATEWAY% 0
  20. netsh interface ip set dns "%INTERFACE%" static %DNS1% PRIMARY
  21. netsh interface ip add dns "%INTERFACE%" %DNS2% index=2
  22.         )
  23. )
  24. pause
复制代码
在虚拟机XP下成功,但反应较慢,也不满意。


但在Win8不成功

TOP

回复 4# 522235677

虚拟机测试还是有问题:重命名成功,IP没有设置好

TOP

@echo off & setlocal ENABLEDELAYEDEXPANSION
set n=0
echo 根据你的姓名输入编号并按下回车键
for /f "tokens=1,2" %%a in (1.txt) do (
set /a n+=1
echo !n!.%%a
)
set n=0
set /p choice=输入编号:
for /f "tokens=1,2" %%a in (1.txt) do (
set /a n+=1
        if "!n!"=="%choice%" (
                wmic computersystem where "caption='%ComputerName%'" call rename %%a
                netsh interface ipv4 set address "本地连接" static %%b 255.255.255.0 192.168.0.1
        )
)
pause

TOP

在win8运行效果(在虚拟机XP中也一样):

TOP

本帖最后由 522235677 于 2014-1-5 19:39 编辑
  1. @echo off & setlocal ENABLEDELAYEDEXPANSION
  2. set n=0
  3. echo 根据你的姓名输入编号并按下回车键
  4. for /f "tokens=1,2" %%a in (1.txt) do (
  5. set /a n+=1
  6. echo !n!.%%a
  7. )
  8. set n=0
  9. set /p choice=输入编号:
  10. for /f "tokens=1,2" %%a in (1.txt) do (
  11. set /a n+=1
  12. if "!n!"=="%choice%" (
  13. wmic computersystem where "caption='%ComputerName%'" call rename %%a
  14. netsh interface ipv4 set address "本地连接" static %%b 255.255.255.0 192.168.0.1
  15. )
  16. )
  17. pause
复制代码

TOP

返回列表