运行带有重音字符的BAT/CMD文件

Kry*_*der 14 batch-file codepages

我有一个Windows批处理文件,其中包含在路径包含重音字符的位置执行EXE文件的指令.以下是批处理文件的内容.

@echo off
C:\español\jre\bin\java.exe -version
Run Code Online (Sandbox Code Playgroud)

C:\español\ jre\bin\java.exe - 此路径存在且正确.我可以直接在cmd.exe上运行此命令.但是当我从bat/cmd文件运行命令时,它无法说"系统找不到指定的路径"

解决此问题的一种方法是将代码页设置为1252(适用于我).但我担心我们必须为任何非英语语言环境设置代码页,并确定使用哪个代码页非常困难.

有没有其他方法来解决这个问题?也许是命令行选项或其他?

kat*_*003 18

在Windows中,另一种方法是使用wordpad.exe:

  1. 运行wordpad.exe
  2. 像往常一样用重音编写脚本
  3. 选择另存为 > 其他格式
  4. 选择将其另存为文本文档MS-DOS(*.txt)
  5. 将文件扩展名从.txt更改为.bat


Met*_*der 9

我有同样的问题,这个答案解决了它.基本上,您必须使用一堆命令来包装脚本以更改终端代码页,然后还原它.

@echo off
for /f "tokens=2 delims=:." %%x in ('chcp') do set cp=%%x
chcp 1252>nul

:: your stuff here ::

chcp %cp%>nul
Run Code Online (Sandbox Code Playgroud)

像魅力一样工作!

  • 它的工作原理就像一个魅力,但我必须使用 Windows 10 记事本和 ANSI 编码来保存 .bat 文件。 (2认同)

Jor*_*ens 6

因为您@echo off无法看到批处理发送到命令提示符的内容.使用它重现你的问题似乎这个ñ角色被误解了,因为我看到的输出是:

C:\espa±ol\jre\bin\java -version
The system cannot find the path specified.
Run Code Online (Sandbox Code Playgroud)

我能够通过从命令提示符将命令回显到批处理文件来使其工作,即

echo C:\español\jre\bin\java.exe -version>>test.bat
Run Code Online (Sandbox Code Playgroud)

这似乎将字符转换为命令提示符所寻找的任何内容,尽管我只使用英语语言环境设置对其进行测试,因此我不知道它是否适用于所有情况.此外,如果您在文本编辑器中打开批处理,如记事本,它看起来错误(C:\espa¤ol\jre\bin\java.exe)


gen*_*afa 5

我正在使用Notepad ++,它具有更改“字符集”的选项OEM-US。;)