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

[系统相关] WIN11批处理迎来了新挑战,无法解决求助。

  1. @echo off
  2. ::网卡名称注意替换 示例: "Ethernet0"
  3. for /f "tokens=2 delims=: " %%b in ('netsh interface show interface "Ethernet0" ^| find /i "管理状态"') do set "net=%%b"
  4. echo %net%
  5. pause
复制代码
经研究,在新发布的WIN11 24H2里,微软先砍了WMIC,再改终端命令打印为UTF-8,导致中文乱码,Findstr直接废了。各位大佬有何解决方案。(不用65001)

回复 12# 逸_凡


    添加失败。。。我已经弃用WMIC了。用powershell代替,就是慢点

TOP

回复 11# jorlaying


    想要纯ansi ,你还得关闭Unicode UTF-8提供全球语言支持
特殊情况下 ,你可能还要用回conhost

TOP

本帖最后由 逸_凡 于 2024-10-14 00:27 编辑

回复 1# jorlaying


    没砍,设置➡️系统➡️可选功能➡️WMIC,安装上就好了。

    显示乱码?默认是UTF-8,另存为ANSI就好了。

TOP

回复 10# czjt1234


    默认就是936 ANSI下还是乱码

TOP

回复 9# jorlaying


你的代码保存为ANSI,在win7的电脑上正常
复制到刚装好的win11上,乱码,直接记事本打开也是乱码,运行也是乱码

把win11配置为中国后,重新复制你的代码到win11,记事本打开正常,运行正常

QQ 20147578

TOP

回复 8# czjt1234


    你用我那代码测了没  是不是乱码。。

TOP

你 chcp 看看是 437 还是 65001
如果是 437 就是你的win11没完全配置为中国

QQ 20147578

TOP

虚拟机 VirtualBox-7.0.20-163906-Win.exe 装了个 win11 24H2
zh-cn_windows_11_business_editions_version_24h2_x64_dvd_5f9e5858.iso
测试
  1. @echo off
  2. ver
  3. chcp
  4. ipconfig/all | findstr "首选"
  5. for /f "tokens=2 delims=: " %%b in ('ipconfig/all ^| findstr "首选"') do set "net=%%b"
  6. echo, %net%
  7. echo 按不出计算机我的电脑此电脑QQ浏览器的风格
  8. pause
复制代码
批处理文件是另存为ANSI
运行结果如下
  1. Microsoft Windows [版本 10.0.26100.1742]
  2. 活动代码页: 936
  3.    本地链接 IPv6 地址. . . . . . . . : fe80::218d:7569:4d13:3539%10(首选)
  4.    IPv4 地址 . . . . . . . . . . . . : 192.168.0.103(首选)
  5. 地址
  6. 按不出计算机我的电脑此电脑QQ浏览器的风格
  7. 请按任意键继续. . .
复制代码

QQ 20147578

TOP

回复 5# jorlaying


    纯英文ascii字符情况下应该还是正常的 ,只是微软没考虑那些非ascii字符
因为其他内核的系统一般也用utf8 ,对于英文环境来说或更加统一了 ,但是对于非英文环境来说更加混乱了

TOP

回复 2# Five66


    看来微软是想弃用cmd了。

TOP

回复 3# flashercs


    默认没有,可选功能。

TOP

本帖最后由 flashercs 于 2024-10-11 19:35 编辑

你是说 wmic彻底没了?还是变成可选功能(默认禁止的)?以后用wmic的命令还要先检测 是否存在wmic.exe ?
微信:flashercs
QQ:49908356

TOP

windows中的编码问题本来就是非常非常非常混乱的
用第三方程序代替find和findstr
或者不用bat用其他的

TOP

返回列表