尝试更改.bat文件中的代码页时,我遇到了一个奇怪的问题。
当我在Windows 7中执行以下.bat文件时,它执行正常。
代码页被更改,program.exe
被执行。
批处理文件:
chcp 65001
"D:\program.exe" /opt ÄiÜ
pause
然而,当我从Windows Vista启动.bat文件时,代码页会被更改,然后退出批处理文件。
所以program.exe
永远不会被执行
但是,当我从命令行手动运行这两个命令时,它确实有效。
知道如何在.bat文件下在Windows Vista下运行吗?
答案 0 :(得分:1)
对我而言,这与Win7有关,在Vista和XP中,如果代码页更改为65001,则批处理文件不起作用是正常的。
但你可以使用一个工作单
(
chcp 65001
cmd /c type myFile.txt
chcp 850
)
echo the batch is still alive
这是有效的,因为在更改代码页时缓存了完整的块。
在您的情况下(使用德语变音符号)您可以更好地使用代码页1252
chcp 1252
echo ÄÖÜß
答案 1 :(得分:0)
您是否检查了chcp
(chcp 65001 & echo %ERRORLEVEL%
)的返回代码?
无论如何,请尝试chcp 65001 & "D:\program.exe" /opt ÄiÜ & chcp 850
。
答案 2 :(得分:0)
我找到了一个适合我的(非常脏的)解决方案。
从它的外观来看,我想要做的事情是不可能的。
我为使其发挥作用所做的工作如下:
正如我所说,它非常脏,但对我有用。
如果在这里添加其他答案,我也会尝试这些。
答案 3 :(得分:0)
一个不那么难看的解决方案,当我需要使用带有特殊字符的文件名作为批处理文件中的参数时,我会使用它:
如果您输入" dos"中的批处理文件内容窗口(类型为batchfilename.bat)您将看到文件名是正确的。 (在文件查看器中内置的totalcommander中看起来也是正确的,但在记事本中看起来很垃圾)