找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 3577|回复: 14

[文本处理] 批处理WMIC 命令获取的UTF-16 LE本文 与chcp 936 命令下获取的ASNI本文共存!

[复制链接]
发表于 2025-8-14 03:02:05 | 显示全部楼层 |阅读模式
写了一组获取磁盘信息的代码,有WMIC命令 和 diskpart,,
  1. Wmic LOGICALDISK get Caption,Description,FileSystem,VolumeSerialNumber,VolumeName&Echo.list VOLUME|diskpart |find "卷"&fsutil fsinfo drives
复制代码
在cmd窗口下可以正常显示,,,,

但是写入本文则出现乱码,,,,
  1. (chcp 936>nul&Wmic LOGICALDISK get Caption,Description,FileSystem,VolumeSerialNumber,VolumeName&Echo.list VOLUME|diskpart |find "卷"&fsutil fsinfo drives)>disk.txt
复制代码
WMIC 命令下 获取的本文是 UTF-16 LE编码, 如果直接写入 ANSI 本文会出现乱码,勉强能认,但中文会乱码,,,,
  1. (Echo.list VOLUME|diskpart |find "卷"&fsutil fsinfo drives&Wmic LOGICALDISK get Caption,Description,FileSystem,VolumeSerialNumber,VolumeName)>disk2.txt
复制代码
而在CHCP 936 命令下获得的回显写入 UTF-16 LE  本文,则乱码更甚,彻底认不出任何,,,,

为了迁就命令顺序和本文编码只有转码写入,鄙人写了个简单的转码步骤,,,
  1. @echo off
  2. chcp 936&set/p=<nul>disk.txt
  3. wmic LOGICALDISK get Caption,Description,FileSystem,VolumeSerialNumber,VolumeName> disk16.txt && type disk16.txt >>disk.txt && del disk16.txt
  4. (Echo.list VOLUME|diskpart |find "卷"&fsutil fsinfo drives)>>disk.txt
  5. pause
复制代码
chcp 936&set/p=<nul>disk.txt  创建没有空格行的ANSI 本文文件,,,
disk16.txt && type disk16.txt >>disk.txt && del disk16.txt  
UTF-16 LE  本文文件 写入ANSI空文件  并删除,,,,,,,

疑问:有没有什么方法或命令可以在不产生临时文件的情况下完整写入一个本文文件呢?,,,,,
不一定限定ANSI编码本文,什么编码的本文都可以。或直接生成UTF-16 LE  本文文件 ,,,,,,?

可是直接生成UTF-16 LE  本文文件 该用 CHCP ????页码,能在运行带有中文命令,又能兼顾 WMIC 命令或其他 编码的回显呢?
解开这个万金油的页码,貌似不错哦!
因为具鄙人所知,能生成 UTF-16 LE  本文文件 的页码也是可以支持带有中文命令的执行(如:find "卷" )。
而 UTF 回显的编码也是可以写入 UTF-16 LE  本文文件 而不出现乱码的!
所以理论上来说,把它两融合在一起执行,而共同写入一个文件,应该是可以共存的。,,,自己瞎猜的未经验证!
讨论讨论呗,反正那么无聊,,,,,
发表于 2025-8-14 08:45:06 | 显示全部楼层
加个 for,例如:

for /F "delims=" %%I in ('wmic diskdrive get Caption^,Model^,Size') do for /F "delims=" %%J in ("%%I") do echo %%~J>>hdd.txt
发表于 2025-8-14 09:05:39 | 显示全部楼层
回复 1# jiavip
  1. @echo off
  2. cd /d "%~dp0"
  3. (for /f "delims=" %%i in ('wmic LOGICALDISK get Caption^,Description^,FileSystem^,VolumeSerialNumber^,VolumeName') do (
  4.     for /f "delims=" %%j in ("%%i") do (
  5.         echo,%%j
  6.     )
  7. ))>1.txt
复制代码
 楼主| 发表于 2025-8-14 09:05:49 | 显示全部楼层
回复 2# hnfeng


    这招我会,也用过,,,不是我想达成的效果,,
我还是比较沉迷研究,,chcp,页码,,或非转码方式,,,
神神秘秘悬悬乎乎的那种,,我自己也不知道我在说的是什么,,,哈哈。
发表于 2025-8-14 09:06:15 | 显示全部楼层
发表于 2025-8-14 09:09:21 | 显示全部楼层
回复 4# jiavip


    2楼这招,与你想实现的终极目标,两者之间有啥差异,请举个栗子展开讲讲
 楼主| 发表于 2025-8-14 09:40:31 | 显示全部楼层
------------------------------Windows页面编码表(Chcp Code)----------------------------------------------
No.        页面编码        名称                                代码
1        37        IBM EBCDIC (美国-加拿大)                IBM037
2        437        OEM 美国                                IBM437
3        500        IBM EBCDIC (国际)                        IBM500
4        708        阿拉伯字符(ASMO-708)                ASMO-708
5        720        阿拉伯字符(DOS)                        DOS-720
6        737        希腊字符(DOS)                        ibm737
7        775        波罗的海字符(DOS)                        ibm775
8        850        西欧字符(DOS)                        ibm850
9        852        中欧字符(DOS)                        ibm852
10        855        OEM        西里尔语                        IBM855
11        857        土耳其字符(DOS)                        ibm857
12        858        OEM 多语言拉丁语I                        IBM00858
13        860        葡萄牙语(DOS)                        IBM860
14        861        冰岛语(DOS)                        ibm861
15        862        希伯来字符(DOS)                        DOS-862
16        863        加拿**语(DOS)                        IBM863
17        864        阿拉伯字符(864)                        IBM864
18        865        北欧字符(DOS)                        IBM865
19        866        西里尔字符(DOS)                        cp866
20        869        现代希腊字符(DOS)                        ibm869
21        870        IBM EBCDIC (多语言拉丁语2)                IBM870
22        874        泰语(Windows)                        windows-874
23        875        IBM EBCDIC (现代希腊语)                cp875
24        932        日语(Shift-JIS)                        shift_jis
25        936        简体中文(GB2312)                        gb2312
26        949        朝鲜语                                ks_c_5601-1987
27        950        繁体中文(Big5)                        big5
28        1026        IBM EBCDIC (土耳其拉丁语5)                IBM1026
29        1047        IBM 拉丁语 1                        IBM01047
30        1140        IBM EBCDIC (美国-加拿大-欧洲)                IBM01140
31        1141        IBM EBCDIC (德国-欧洲)                IBM01141
32        1142        IBM EBCDIC (丹麦-挪威-欧洲)                IBM01142
33        1143        IBM EBCDIC (芬兰-瑞典-欧洲)                IBM01143
34        1144        IBM EBCDIC (意大利-欧洲)                IBM01144
35        1145        IBM EBCDIC (西班牙-欧洲)                IBM01145
36        1146        IBM EBCDIC (英国-欧洲)                IBM01146
37        1147        IBM EBCDIC (法国-欧洲)                IBM01147
38        1148        IBM EBCDIC (国际-欧洲)                IBM01148
39        1149        IBM EBCDIC (冰岛语-欧洲)                IBM01149
40        1200        Unicode                                utf-16
41        1201        Unicode (Big-Endian)                utf-16BE
42        1250        中欧字符(Windows)                        windows-1250
43        1251        西里尔字符(Windows)                windows-1251
44        1252        西欧字符(Windows)                        Windows-1252
45        1253        希腊字符(Windows)                        windows-1253
46        1254        土耳其字符(Windows)                windows-1254
47        1255        希伯来字符(Windows)                windows-1255
48        1256        阿拉伯字符(Windows)                windows-1256
49        1257        波罗的海字符(Windows)                windows-1257
50        1258        越南字符(Windows)                        windows-1258
51        1361        朝鲜语(Johab)                        Johab
52        10000        西欧字符(Mac)                        macintosh
53        10001        日语(Mac)                                x-mac-japanese
54        10002        繁体中文(Mac)                        x-mac-chinesetrad
55        10003        朝鲜语(Mac)                        x-mac-korean
56        10004        阿拉伯字符(Mac)                        x-mac-arabic
57        10005        希伯来字符(Mac)                        x-mac-hebrew
58        10006        希腊字符(Mac)                        x-mac-greek
59        10007        西里尔字符(Mac)                        x-mac-cyrillic
60        10008        简体中文(Mac)                        x-mac-chinesesimp
61        10010        罗马尼亚语(Mac)                        x-mac-romanian
62        10017        乌克兰语(Mac)                        x-mac-ukrainian
63        10021        泰语(Mac)                                x-mac-thai
64        10029        中欧字符(Mac)                        x-mac-ce
65        10079        冰岛语(Mac)                        x-mac-icelandic
66        10081        土耳其字符(Mac)                        x-mac-turkish
67        10082        克罗地亚语(Mac)                        x-mac-croatian
68        12000        Unicode (UTF-32)                        utf-32
69        12001        Unicode (UTF-32 Big-Endian)                utf-32BE
70        20000        繁体中文(CNS)                        x-Chinese-CNS
71        20001        TCA 中国台湾                        x-cp20001
72        20002        繁体中文(Eten)                        x-Chinese-Eten
73        20003        IBM5550 中国台湾                        x-cp20003
74        20004        TeleText 中国台湾                        x-cp20004
75        20005        Wang 中国台湾                        x-cp20005
76        20105        西欧字符(IA5)                        x-IA5
77        20106        德语(IA5)                                x-IA5-German
78        20107        瑞典语(IA5)                        x-IA5-Swedish
79        20108        挪威语(IA5)                        x-IA5-Norwegian
80        20127        US-ASCII                                us-ascii
81        20261        T.61                                x-cp20261
82        20269        ISO-6937                                x-cp20269
83        20273        IBM EBCDIC (德国)                        IBM273
84        20277        IBM EBCDIC (丹麦-挪威)                IBM277
85        20278        IBM EBCDIC (芬兰-瑞典)                IBM278
86        20280        IBM EBCDIC (意大利)                        IBM280
87        20284        IBM EBCDIC (西班牙)                        IBM284
88        20285        IBM EBCDIC (UK)                        IBM285
89        20290        IBM EBCDIC (日语片假名)                IBM290
90        20297        IBM EBCDIC (法国)                        IBM297
91        20420        IBM EBCDIC (阿拉伯语)                IBM420
92        20423        IBM EBCDIC (希腊语)                        IBM423
93        20424        IBM EBCDIC (希伯来语)                IBM424
94        20833        IBM EBCDIC (朝鲜语扩展)                 x-EBCDICKoreanExtended
95        20838        IBM EBCDIC (泰语)                        IBM-Thai
96        20866        西里尔字符(KOI8-R)                        koi8-r
97        20871        IBM EBCDIC (冰岛语)                        IBM871
98        20880        IBM EBCDIC (西里尔俄语)                IBM880
99        20905        IBM EBCDIC (土耳其语)                IBM905
100        20924        IBM 拉丁语 1                        IBM00924
101        20932        日语(JIS 0208-1990 和 0212-1990)        EUC-JP
102        20936        简体中文(GB2312-80)                        x-cp20936
103        20949        朝鲜语 Wansung                        x-cp20949
104        21025        IBM EBCDIC (西里尔塞尔维亚-保加利亚语)        cp1025
105        21866        西里尔字符(KOI8-U)                        koi8-u
106        28591        西欧字符(ISO)                        iso-8859-1
107        28592        中欧字符(ISO)                        iso-8859-2
108        28593        拉丁语 3 (ISO)                        iso-8859-3
109        28594        波罗的海字符(ISO)                        iso-8859-4
110        28595        西里尔字符(ISO)                        iso-8859-5
111        28596        阿拉伯字符(ISO)                        iso-8859-6
112        28597        希腊字符(ISO)                        iso-8859-7
113        28598        希伯来字符(ISO-Visual)                iso-8859-8
114        28599        土耳其字符(ISO)                        iso-8859-9
115        28603        爱沙尼亚语(ISO)                        iso-8859-13
116        28605        拉丁语 9 (ISO)                        iso-8859-15
117        29001        欧罗巴                                x-Europa
118        38598        希伯来字符(ISO-Logical)                iso-8859-8-i
119        50220        日语(JIS)                                iso-2022-jp
120        50221        日语(JIS-允许 1 字节假名)                csISO2022JP
121        50222        日语(JIS-允许 1 字节假名-SO/SI)                 iso-2022-jp
122        50225        朝鲜语(ISO)                        iso-2022-kr
123        50227        简体中文(ISO-2022)                        x-cp50227
124        51932        日语(EUC)                                euc-jp
125        51936        简体中文(EUC)                        EUC-CN
126        51949        朝鲜语(EUC)                        euc-kr
127        52936        简体中文(HZ)                        hz-gb-2312
128        54936        简体中文(GB18030)                        GB18030
129        57002        ISCII 梵文                                x-iscii-de
130        57003        ISCII 孟加拉语                        x-iscii-be
131        57004        ISCII 泰米尔语                        x-iscii-ta
132        57005        ISCII 泰卢固语                        x-iscii-te
133        57006        ISCII 阿萨姆语                        x-iscii-as
134        57007        ISCII 奥里雅语                        x-iscii-or
135        57008        ISCII 卡纳达语                        x-iscii-ka
136        57009        ISCII 马拉雅拉姆语                        x-iscii-ma
137        57010        ISCII 古吉拉特语                        x-iscii-gu
138        57011        ISCII 旁遮普语                        x-iscii-pa
139        65000        Unicode (UTF-7)                        utf-7
140        65001        Unicode (UTF-8)                        utf-8
---------------------------------------------------------------------------------------------------


说白了,我就是想找人一起去研究这份 页码对应表,不过我又懒,没那么多耐心去逐个摸排折腾,,
 楼主| 发表于 2025-8-14 09:48:15 | 显示全部楼层
回复 6# ShowCode


    目的很简单,找个合适的页码,适配中文命令和UTF回显,,,
发表于 2025-8-14 12:10:20 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-8-14 12:13 编辑

回复 1# jiavip

先用 '变量字典' 过桥,再用 %%~nx 断尾...

  1. @echo off &setlocal &for /f "delims=" %%a in ('wmic LOGICALDISK get Caption^,Description^,FileSystem^,VolumeSerialNumber^,VolumeName^|find ":" ') do set/a "n+=1" &call set "_#%%n%%=%%a"
  2. (for /f "tokens=2* delims==:" %%x in ('set _#') do echo.%%x:%%~nxy)>disk.txt
  3. pause&exit/b
复制代码
发表于 2025-8-14 12:59:48 | 显示全部楼层
  1. @echo off
  2. chcp 936
  3. Wmic LOGICALDISK get Caption,Description,FileSystem,VolumeSerialNumber,VolumeName | findstr . >1.txt
  4. pause
复制代码
发表于 2025-8-14 18:53:41 | 显示全部楼层
代码页是给程序用的 ,让程序能够根据代码页自行切换编码进行适应 ,但是90%以上写程序的人都不会进行编码自适应 ,因此对于这样的程序来说 ,无论怎样chcp都是没用的
 楼主| 发表于 2025-8-15 00:15:13 | 显示全部楼层
回复 11# Five66
兄弟话不是这样说啊,,例如:
CHCP 936 & ECHO.一>1.TXT
CHCP 65001 & ECHO.二>2.TXT
CHCP 20936 & ECHO.三>3.TXT

会得到不同的编码本文,,,
我的思路就是说,找一个合适的页码,既支持带有中文的命令而输出的本文也可以支持UTF 回显的写入,,,
而  UTF-16 LE  编码的本文好像是个中性存在,好多 UTF 字符也可以在里面显示,支持中文命令输入,但是不支持写入,,
有点乱吧!,,我自己也搞得不是太懂,,瞎讨论而已,,,,
发表于 2025-8-15 01:33:39 | 显示全部楼层
回复 12# jiavip


    能得到不同编码是因为echo命令是是根据代码页自适应编码的(本质上是cmd)
11楼说的是让你搞清楚那些是自适应编码的 ,那些不是自适应编码的 ,弄清楚了就能知道到底能不能实现和如何实现了

  1. (Wmic LOGICALDISK get Caption,Description,FileSystem,VolumeSerialNumber,VolumeName|more&Echo.list VOLUME|diskpart |find "卷"&fsutil fsinfo drives)>disk.txt
复制代码
发表于 2025-8-15 08:06:59 | 显示全部楼层
从wmic的输出结果来看 ,wmic不是自适应的 ,不会根据代码页来转换编码 ,不管怎样chcp都是utf-16le ,因此要将输出变成ansi用chcp是没用的 ,只能找支持utf-16le(即unicode)并且本身输出是ansi或自适应的命令或程序
同样的 ,要将其他输出变成utf-16le ,而utf-16le(即unicode)的代码页1200是不能用的 ,无法chcp 1200 ,而且就算能够chcp 1200 ,也得要程序或命令支持自适应 ,但是前面也说了 ,90%以上写程序的人都没写自适应 ,不支持自适应的程序或命令 ,不管怎样chcp输出编码都是不会变的 ,因此要将其他输出变成utf-16le ,就剩下cmd /u /c了 ,不知道行不行 ,没研究过
发表于 2025-8-15 11:59:47 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-8-15 12:20 编辑

回复 7# jiavip

以前试过码页多种选项,有关utf-16的码页均被系统视为无效码页。用9楼代码已经试过,可删除wmic返回值行尾特殊字符,且可不用临时文件将utf-16编码返回值转码为当前默认的936编码…
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 07:11 , Processed in 0.025191 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表