回复 1# ygqiang
本帖与另帖(http://www.bathome.net/thread-70452-1-1.html)反复敲打的都与cmd这个功能有关 》即切换当前码页会导致被屏显的变量数据自动转换其编码为当前码页编码... 另帖中6楼代码据此功能示例了用纯批如何互转文本文件的简中/utf-8编码,同理,以下代码根据当前脚本编码的识别结果来即时切换码页以使变量数据得以正常屏显... 代码基于一个简化的假设即脚本文件的编码或是简中(ansi/gb2312)或是 utf-8;代码中调用的 coder.exe 可从本坛第三方下载(http://bcn.bathome.net/s/tool/index.html?key=coder)落地即用,与批处脚本同目录- @echo off &setlocal enabledelayedexpansion
- for /f %%a in ('coder.exe -s -a gc -f "%~f0" ') do set "ec=%%a"
- if /i "%ec%"=="ansi" (set "_ec=00936") else set "_ec=65001"
- chcp %_ec%>nul
- set "p=当前码页:" &echo,!p!%_ec%
- for /f "tokens=4 delims= " %%a in (
- 'netsh interface show interface^|more +3'
- ) do set/a "n+=1" &set "_#!n!=网卡名称:%%a" &echo,网卡名称:%%a
- pause
- if /i "%ec%"=="ansi" (set "_ec=65001") else set "_ec=00936"
- chcp %_ec%>nul
- echo,!p!%_ec%
- for /f "tokens=1* delims==" %%a in ('set _#') do echo,%%b
- pause&exit/b
复制代码
|