批处理读取注册表中文时出现错误

来源:百度知道 编辑:UC知道 时间:2024/05/03 20:23:47
我在用批处理读取注册表时出现了一个错误 这个错误就是如果在注册表值是中文的时候后面的很多都显示不出来
我读取的是魔兽争霸的目录文件用的批处理是
@echo off
setlocal enabledelayedexpansion
for /f "tokens=1,2 delims=:" %%a in ('reg query HKCR\CLSID\{307A6C42-0000-0010-8000-00AA00389B71}\InprocServer32^|findstr /i "blizz"') do (
set disk=%%a
set disk=!disk:~-1!
set war=%%b
set war=!war:~0,-11!
set war3=!disk!:!war!)
echo %war3%

如果这个魔兽目录不存在有中文名字时候读取正确,但是如果存在有中文字符时候他在字节上就出问题了 ,如果有一个中文字符他后面就会少掉一位显示,我现在想知道怎样才能避免这个错误存在,让他中文和英文字符都能正确的读取

还有我用
reg query HKCR\CLSID\{307A6C42-0000-0010-8000-00AA00389B71}\InprocServer32 >a.txt
这个写到文件里面也出现同样错误但是在dos里面输入它却能全部显示出来

求高手指点下

如果有人能解决掉我给他150分,以人格担保决不食言
:运行结果
\Pr
请按任意键继续. . .
我的魔兽路径完整的是C:\Program Files\魔兽争霸 你改过了他只能显示开始三个了,这个关键点是要让英文的和中文的都能读取成一样
还有我扣除的后面11位你可以不扣,那11位在我这里因该是blizzard.ax
你可以找任意一个含有中文的中文的默认值自己试下,如果实在没有中文的默认值你可以自己随便弄个一会在删除就

这次改好了

1、

@echo off
reg query "HKCR\CLSID\{307A6C42-0000-0010-8000-00AA00389B71}\InprocServer32"|findstr /i "blizzard.ax">tmp.txt
for /f "tokens=1,2* delims=REG_SZ" %%a in ('type tmp.txt') do set pa=%%b
del /q tmp.txt
for /f "tokens=1,2,3* delims=:\" %%i in ('echo %pa%') do (
set "disk=%%i"
set "war=%%j\%%k"
)
set "war3=%disk%:\%war%"
echo %war3%

2、
reg query "HKCR\CLSID\{307A6C42-0000-0010-8000-00AA00389B71}\InprocServer32" >a.txt

我没魔兽,你试一下