Windows XP中的REG QUERY和重音字符

问题描述:

我无法访问我在Windows XP命令行中从注册表中查询的路径字符串(如果它们包含重音字符)。Windows XP中的REG QUERY和重音字符

for /f "tokens=4*" %a in ('reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "Common Start Menu" ^| find /i "Common Start Menu"') do set test=%b 
echo %test% 

在西班牙的操作系统,该代码返回:

%ALLUSERSPROFILE%\Men· Inicio 

其中“·”应该是一个“U”所以,如果我尝试,我不能与路径工作,例如改变它的实际目录...

cd %test% 

我最终得到一个“系统找不到指定的路径”错误。我尝试在代码页(chcp)之间切换,但无法弄清楚。

试试下面的代码片段:

@echo off 
setlocal ENABLEDELAYEDEXPANSION 
MODE CON CP SELECT=1250 > NUL 
for /f "tokens=4*" %%a in ('reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "Common Start Menu" ^| find /i "Common Start Menu"') do set test=%%b 
MODE CON CP SELECT=852 > NUL 
set xest=!test:%%allusersprofile%%=%allusersprofile%! 
@echo "%xest%" 
@dir /AD "%xest%" 
endlocal 

正如我在捷克的窗口,您应该修改代码页中均MODE CON CP SELECT=xxx命令你的语言环境。为了您的信息:1250 = Windows ANSI中欧,852 = OEM中欧;我猜你的分别可能是1252 (ANSI Latin 1; Western European for Windows) and 850 (OEM Multilingual Latin 1; Western European for DOS)

命令提示符在ANSI中起作用。也许将其设置为unicode可能会有所帮助。

cmd /u /k <commandname> 

从帮助

控制台代码页 代码页是256个字符代码对单个字符的映射。不同的代码页面包含不同的特殊字符,通常为一种语言或一组语言定制。

与每个控制台相关的是两个代码页:一个用于输入,另一个用于输出。控制台使用其输入代码页将键盘输入转换为相应的字符值。它使用其输出代码页将各种输出函数写入的字符值转换为控制台窗口中显示的图像。应用程序可以使用SetConsoleCP和GetConsoleCP函数来设置和检索控制台的输入代码页,并使用SetConsoleOutputCP和GetConsoleOutputCP函数来设置和检索其输出代码页。

本地计算机上可用的代码页的标识符存储在注册表中的以下项下。

HKEY_LOCAL_MACHINE \系统\ CurrentControlSet \控制\ NLS \代码页

使用命令

chcp <codepage> 

mode cp <codepage> 

虽然850(国际英语也是西欧)。

确保区域设置在Regioanal Optons中正确设置。另外,请检查设置非单

+0

命令提示符适用于OEM,不适用于ANSI ...而Windows CMD外壳不支持Unicode; “CMD/A”或“CMD/U”在ANSI或UNICODE字符中仅生成_output only_:这些选项将影响文件的_piping_或_redirecting_。 – JosefZ 2014-10-20 19:16:16