Board logo

标题: [系统相关] 怎么让BAT在不同版本系统运行 [打印本页]

作者: dickyuan    时间: 2022-11-27 17:16     标题: 怎么让BAT在不同版本系统运行

自己电脑开发的CMD 比如写 ipconfig /all 返回的全是英文。所以抓取关键字 获取IP以英文获取,但是 用到其他电脑上。返回的是中文显示。无法通用。
这种情况是不是只能用IF判断 对不同系统做适配?
有没有更方便的方法,比如设置回显变成英文 或者 设置cmd版本?
如果没有 那适配需要多少个版本?只需要适配英文中文 ?
因为个人开发个小应用 批量修改大量笔记本电脑的桌面壁纸 和 WIFI连接。
  1. @echo off
  2. :: 设置窗体背景颜色
  3. color 1f
  4. :: 设置窗体标题
  5. title 正在监控http://192.168.1.46:5000
  6. echo 正在监控 http://192.168.1.46:5000
  7. set firstMatch=True
  8. ipconfig /all |findstr Physical>asdf.txt
  9. for /F "delims=" %%i in (asdf.txt) do (
  10. if defined firstMatch (
  11. set mac=%%i
  12. set "firstMatch="
  13. )
  14. )
  15. ipconfig |findstr IPv4>asdf.txt
  16. for /F "delims=" %%i in (asdf.txt) do (
  17. set ip=%%i
  18. set "firstMatch="
  19. )
  20. echo mac:%mac%
  21. echo ip:%ip%
  22. :next
  23. echo curl -s -d "mac=%mac:~-17%" -d "ip=%ip%" -X POST http://192.168.1.46:5000
  24. curl -s -d "mac=%mac:~-17%" -d "ip=%ip%" -X POST http://192.168.1.46:5000>asdf.txt
  25. set /p re=<asdf.txt
  26. del asdf.txt
  27. echo re:%re%
  28. if %re:~0,1%==0 (
  29.     echo 在%date:~0,10% %time:~0,8% 访问正常
  30.     echo 正在监控http://192.168.1.46:5000
  31. )
  32. if %re:~0,1%==1 (
  33.     echo 在%date:~0,10% %time:~0,8% 访问正常
  34.     echo %re:~1%
  35. echo http://192.168.1.46:5000/zhuomian/%re:~1%/%mac:~-17%/
  36. curl -o test.jpg http://192.168.1.46:5000/zhuomian/%re:~1%/%mac:~-17%/
  37. reg add "hkcu\control panel\desktop" /v wallpaper /d "%cd%/test.jpg" /f
  38. reg add "hkcu\control panel\desktop" /v WallpaperStyle /t REG_DWORD /d 2 /f
  39. RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters
  40. set re=0
  41. )
  42. if %re:~0,1%==2 (
  43.     echo 在%date:~0,10% %time:~0,8% 访问正常
  44.     echo %re:~1%
  45. echo http://192.168.1.46:5000/wifi/%mac:~-17%/
  46. curl -o %re:~1%.xml http://192.168.1.46:5000/wifi/%mac:~-17%/%re:~1%/
  47. netsh wlan add profile filename="%re:~1%.xml"
  48. Netsh WLAN set profileparameter name="%re:~1%" connectionmode=auto
  49. netsh wlan connect name=%re:~1%
  50. set re=0
  51. )
  52. if %re:~0,1%==3 (
  53.     echo 在%date:~0,10% %time:~0,8% 访问正常
  54.     echo %re:~1%
  55. echo %re:*YY=%
  56. echo %re:~1%>123.txt
  57. set first=True
  58. for /f "delims=YY" %%i in (123.txt) do (
  59. if defined first (
  60. set reip=%%i
  61. set "first="
  62. )
  63. echo %reip%
  64. if "%reip%" NEQ "" (
  65. curl -o test.jpg http://192.168.1.46:5000/zhuomian/%reip%/%mac:~-17%/
  66. reg add "hkcu\control panel\desktop" /v wallpaper /d "%cd%/test.jpg" /f
  67. reg add "hkcu\control panel\desktop" /v WallpaperStyle /t REG_DWORD /d 2 /f
  68. RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters
  69. )
  70. if "%re:*YY=%" NEQ "" (
  71. curl -o %re:~1%.xml http://192.168.1.46:5000/wifi/%mac:~-17%/%re:*YY=%/
  72. netsh wlan add profile filename="%re:*YY=%.xml"
  73. Netsh WLAN set profileparameter name="%re:*YY=%" connectionmode=auto
  74. netsh wlan connect name=%re:*YY=%
  75. )
  76. )
  77. )
  78. :: 休眠60秒
  79. choice /t 3 /d y /n >nul
  80. goto next
复制代码
自学没多久 现在困扰SET 参数 老是无效 只能> 到TXT然后读取TXT的信息到 SET 参数
作者: dickyuan    时间: 2022-11-27 17:37

= = 问题自己解决了
第八行 ipconfig /all |findstr Physical>asdf.txt
改成ipconfig /all |findstr ..-..-..-..-..-..>asdf.txt 就行了
正则解决。好了 不研究bat了 太头疼
作者: czjt1234    时间: 2022-11-27 18:48

刚才测试一下,运行 chcp 437 切换到美国代码页
ipconfig/all 出来的是英文
作者: Batcher    时间: 2022-11-27 20:03

回复 1# dickyuan


英文:chcp 437
中文:chcp 936




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