我有一些批处理文件使用文本文件进行语言独立。直到昨天一切都很好......但后来我开始将标准文本翻译成荷兰语和德语。两种语言都使用所谓的变音或重音字符,如ä,ë,ö。我认为西班牙语会给ñ带来同样的问题。我使用标准编码使用记事本创建了文本文件,即ANSI。只需键入(DOS:TYPE)文件就会显示错误的重音字符:例如ë显示为Ù。编辑完文本文件并使用Unicode编码保存后,DOS TYPE显示我在记事本中输入的内容。在这一点上,我认为我的问题已经解决了...但我的批处理代码现在显示我没有任何文字!所有文本都通过批处理文件从文件中检索,该文件看起来像这样(简化):
@rem Parms %1 text type number File %%a program name
@rem %2 program name (double quoted) %%b - - filler (tabs)
@rem %3 text number %%c text number
@rem %4 replacement value - 1 %%d - - filler (tabs)
@rem %5 replacement value - 2 %%e text string
set TempText=
set TempType=
setlocal enabledelayedexpansion
@rem Read file until both values are set ...
for /f "usebackq tokens=1,2,3,4,5 delims=|" %%a in ("%EnvPath%Text.txt") do (
if /i %%a==Tools (if /i %%c==%1 (set TempType=%%e))
if /i %%a==%~2 (if /i %%c==%3 (set TempText=%%e))
if not "!TempType!"=="" (if not "!TempText!"=="" (goto :Leave))
)
:Leave
endlocal & set TempText=%TempText%&set TempType=%TempType%
当ECHO
为ON
时,它表明没有从文件中读取任何行,或者永远不会执行FOR循环。
我的问题是:如何让FOR循环读取Unicode文本?
答案 0 :(得分:1)
你的问题是cmd使用代码页850(在美国可能是437),输入chcp
来查看。英语Windows在其他地方使用1252。
GUI程序
ñ 0xf1
控制台程序
ñ 0xa4
如果您使用32位,请使用edit.exe(msdos文本编辑器)。否则,您可以使用Word并另存为MSDos文本。
答案 1 :(得分:0)
晚了三年,但是......
您可以使用type
命令将文件“动态”转换为ANSI:
... %%a in ('type "%EnvPath%Text.txt"') do (