更改.bat文件中的代码页(Win7 vs Win Vista)

时间:2011-10-12 09:01:34

标签: windows command-line batch-file

尝试更改.bat文件中的代码页时,我遇到了一个奇怪的问题。

当我在Windows 7中执行以下.bat文件时,它执行正常。

代码页被更改,program.exe被执行。

批处理文件:

chcp 65001

"D:\program.exe" /opt ÄiÜ

pause

然而,当我从Windows Vista启动.bat文件时,代码页会被更改,然后退出批处理文件。

所以program.exe永远不会被执行 但是,当我从命令行手动运行这两个命令时,它确实有效。

知道如何在.bat文件下在Windows Vista下运行吗?

4 个答案:

答案 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)

您是否检查了chcpchcp 65001 & echo %ERRORLEVEL%)的返回代码?

无论如何,请尝试chcp 65001 & "D:\program.exe" /opt ÄiÜ & chcp 850

答案 2 :(得分:0)

我找到了一个适合我的(非常脏的)解决方案。

从它的外观来看,我想要做的事情是不可能的。

我为使其发挥作用所做的工作如下:

  • 我没有尝试创建批处理文件,而是创建了一个.txt文件(内容与批处理文件相同)。
  • 我写了一个非常简单的C#程序,它读取.txt文件并执行内容。

正如我所说,它非常脏,但对我有用。

如果在这里添加其他答案,我也会尝试这些。

答案 3 :(得分:0)

一个不那么难看的解决方案,当我需要使用带有特殊字符的文件名作为批处理文件中的参数时,我会使用它:

  1. 将dir命令的输出指向txt文件(dir c:\ foldername> diroutput.txt)
  2. 在记事本中打开diroutput.txt,找到并使用特殊字符将文件名复制到剪贴板(它看起来像垃圾,但没关系)
  3. 将文件名粘贴到在记事本中打开的批处理文件中。
  4. 如果您输入" dos"中的批处理文件内容窗口(类型为batchfilename.bat)您将看到文件名是正确的。 (在文件查看器中内置的totalcommander中看起来也是正确的,但在记事本中看起来很垃圾)