Board logo

标题: [网络连接] 【已解决】求助批处理如何将检测到的mtu 自动应用? [打印本页]

作者: 22123    时间: 2022-11-5 17:23     标题: 【已解决】求助批处理如何将检测到的mtu 自动应用?

本帖最后由 22123 于 2022-11-7 11:44 编辑
  1. @echo off
  2. chcp 437>nul
  3. netsh int ip show subinterfaces
  4. set /p ip=ipaddress:
  5. if "%ip%"=="" (set ip=qq.com)
  6. if %ip%.==. goto:eof
  7. echo.
  8. set con=
  9. for /f "tokens=1 delims= " %%a in ('ping %ip% -n 1 ^| find "Reply"') do set con=%%a
  10. if %con%.==. goto:discon
  11. set min=0
  12. set max=2000
  13. :test
  14. call:try %min% %max%
  15. if %df%.==. (
  16.     if %min%==%package% goto:result
  17.     set min=%package%
  18. ) else (
  19.     set max=%package%
  20. )
  21. goto:test
  22. goto:eof
  23. :result
  24. echo.
  25. echo package: %package%
  26. set /a mtu=%package% + 28
  27. echo MTU : %mtu%
  28. echo.
  29. pause
  30. goto:eof
  31. :try
  32. set /a package=(%1+%2)/2
  33. echo try : %package% [%1 , %2]
  34. call:ping %package%
  35. goto:eof
  36. goto:eof
  37. :ping
  38. set df=
  39. for /f "tokens=1 delims= " %%a in ('ping %ip% -f -l %1 -n 1 ^| find "DF"') do set df=%%a
  40. goto:eof
  41. :discon
  42. echo Error: can not connect to %ip%
  43. echo.
  44. pause
复制代码
有两个问题请教各位大大 ,一个是 如何将得到的最佳 MTU数值 自动添加到%MTU%
这行加在哪里? netsh int ip set subinterface "以太网" mtu=%MTU% store=persistent

还有个问题是 这段代码只能在 chcp 437 下运行,改chcp 936 可以识别中文 但运行不能继续执行.......  本代码也不能保存为ANSI,    导致不能识别 中文 以太网 这几个字,就不能自动修改mtu了
作者: Batcher    时间: 2022-11-6 17:21

回复 1# 22123


改chcp 936 可以识别中文 但运行会闪退

把 @echo off 删掉再执行,看看是哪一行在报错。
如果还是“闪退”,请参考Q-01观察一下哪行代码在报错以及详细的报错信息:
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA
作者: 22123    时间: 2022-11-6 19:10

本帖最后由 22123 于 2022-11-6 22:51 编辑

回复 2# Batcher


管理员大大您好  是我描述有问题
这段代码 chcp 437 下是可以正常执行的 但不支持中文,会显示乱码
如果chcp改为936 可以显示中文, 但指令会错误 输入网址或ip 会跳到  Error: can not connect to %ip%

这个有办法解决吗?
作者: idwma    时间: 2022-11-6 19:25

试一下把第10行的find "Reply"改成中文
作者: 22123    时间: 2022-11-6 21:10

回复 4# idwma
大大您好 Reply改为中文 怎么改?
作者: Batcher    时间: 2022-11-7 10:27

回复 3# 22123


请参考Q-04把bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA
  1. @echo off
  2. chcp 936 >nul
  3. set "ip=127.0.0.1"
  4. set "con="
  5. for /f %%a in ('ping %ip% -n 1 ^| find "回复"') do (
  6.     set "con=%%a"
  7. )
  8. echo con的值是:%con%
  9. pause
复制代码

作者: 22123    时间: 2022-11-7 11:44

回复 6# Batcher


    谢谢大大 已完美解决此问题




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2