我有一个Windows批处理文件,其中包含在路径包含重音字符的位置执行EXE文件的指令。以下是批处理文件的内容。
@echo off
C:\español\jre\bin\java.exe -version
C:\español\ jre \ bin \ java.exe - 此路径存在且正确。我可以直接在cmd.exe上运行此命令。但是,当我从bat / cmd文件运行命令时,它无法说“系统找不到指定的路径”
解决此问题的一种方法是将代码页设置为1252(适用于我)。但我担心我们必须为任何非英语语言环境设置代码页,并确定使用哪个代码页非常困难。
是否有其他方法可以解决此问题?也许是命令行选项或其他什么?
答案 0 :(得分:17)
在Windows中执行此操作的另一种方法是使用 wordpad.exe :
- 运行 wordpad.exe
- 按照惯例编写脚本
- 选择另存为> 其他格式
- 选择将其另存为文本文档MS-DOS(* .txt)
- 将文件扩展名从.txt更改为.bat
醇>
答案 1 :(得分:9)
我遇到了同样的问题,this answer解决了这个问题。基本上你必须用一堆命令包装你的脚本来更改你的终端代码页,然后恢复它。
@echo off
for /f "tokens=2 delims=:." %%x in ('chcp') do set cp=%%x
chcp 1252>nul
:: your stuff here ::
chcp %cp%>nul
像魅力一样工作!
答案 2 :(得分: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
)
答案 3 :(得分:4)
我正在使用Notepad ++,它可以选择更改“字符集”,OEM-US
就可以了。 ;)
答案 4 :(得分:3)
在批处理文件中使用 Alt + 0164 代替 Alt + 164 ñ...它看起来很奇怪,但你的脚本应该运行。
答案 5 :(得分:0)
我也有同样的问题。我试图创建一个简单的XCOPY批处理文件,将电子表格从一个文件夹复制到另一个文件夹。它的名字中有“é”字符,它拒绝复制。
即使尝试使用Katalin和Metalcoder的建议也无法在我的新石器时代的Windows XP机器上运行。然后我突然想到:为什么不让事情变得尽可能简单(因为我自己在计算机方面非常简单)而只是在批处理文件代码中用“#”代替“é”。< / p>
猜猜是什么?它奏效了!
答案 6 :(得分:0)
您可以使用Visual Studio Code,它可以让您选择要使用的编码。在右下角,选择编码,然后显示选项“使用编码保存”。选择DOS,将保存带重音符号。