REG XP中的QUERY和重音字符

时间:2014-10-20 00:30:30

标签: batch-file registry windows-xp

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

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

“·”应该是“ú”,所以我无法使用该路径,例如,如果我尝试将实际目录更改为它...

cd %test%

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

2 个答案:

答案 0 :(得分:1)

尝试下一个代码段:

@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)

答案 1 :(得分:0)

命令提示符适用于ANSI。也许将其设置为unicode可能有所帮助。

cmd /u /k <commandname>

来自帮助

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

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

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

HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \控制\ NLS \代码页

使用命令

chcp <codepage>

mode cp <codepage>

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

确保在Regioanal Optons中正确设置了区域设置。同时检查非uni

的设置