20

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

@echo off
C:\español\jre\bin\java.exe -version

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

解决此问题的一种方法是将代码页设置为 1252(这对我有用)。但是恐怕我们必须为任何非英语语言环境设置代码页,并且确定要使用哪个代码页非常困难。

是否有解决此问题的替代方法?也许是命令行选项或其他东西?

4

7 回答 7

23

在 Windows 中执行此操作的另一种方法是使用wordpad.exe

  1. 运行wordpad.exe
  2. 像往常一样编写脚本,带重音
  3. 选择另存为>其他格式
  4. 选择将其保存为文本文档 MS-DOS (*.txt)
  5. 将文件扩展名从 .txt 更改为 .bat
于 2014-03-12T10:27:43.030 回答
12

我有同样的问题,这个答案解决了它。基本上你必须用一堆命令来包装你的脚本来改变你的终端代码页,然后再恢复它。

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

:: your stuff here ::

chcp %cp%>nul

像魅力一样工作!

于 2013-02-02T13:24:03.767 回答
8

我正在使用记事本++,它有一个更改“字符集”的选项,OEM-US成功了。;)

于 2016-10-26T13:27:28.390 回答
6

既然你有@echo off,你就看不到你的批处理发送到命令提示符的内容。重现你的问题,似乎这个ñ角色被误解了,因为我看到的输出是:

C:\espa±ol\jre\bin\java -version
The system cannot find the path specified.

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

echo C:\español\jre\bin\java.exe -version>>test.bat

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

于 2011-10-22T19:29:47.090 回答
3

您可以使用 Visual Studio Code,它可以让您选择要使用的编码。右下角,您选择编码,将显示“使用编码保存”选项。选择 DOS 并保存重音字符。

于 2020-01-09T17:13:15.087 回答
3

在批处理文件中使用Alt+0164表示 ¤ 而不是Alt+ 164ñ... 这看起来很奇怪,但您的脚本应该可以运行。

于 2016-04-26T16:58:30.500 回答
1

我也有同样的问题。我试图创建一个简单的 XCOPY 批处理文件来将电子表格从一个文件夹复制到另一个文件夹。它的名字中有“é”字,它拒绝复制。

即使尝试使用 Katalin 和 Metalcoder 的建议,在我的新石器时代的 Windows XP 机器上也不起作用。然后我突然想到:为什么不让事情尽可能简单(因为我自己对计算机的想法非常简单),只需将批处理文件代码中的“é”替换为通配符“?”。

你猜怎么着?有效!

于 2015-12-08T08:46:17.317 回答