相关疑难解决方法(0)

chcp 65001和.bat文件

chcp 65001在Windows shell中遇到命令问题.

我需要生成文件夹中的文件列表.所以我运行cmd.exe,输入

cd folder
dir /B /O:N > list_of_files.txt
Run Code Online (Sandbox Code Playgroud)

它工作,但我遇到了一些特殊的非ASCII字符的问题,这些字符在某些文件名中.所以我补充道 chcp 65001

一切正常,但当我将这些命令放入.bat文件时,脚本不起作用.

所以

cd folder
chcp 65001
dir /B /O:N > list_of_files.txt
Run Code Online (Sandbox Code Playgroud)

不生成列表.

cd folder
chcp 65001 && dir /B /O:N > list_of_files.txt
Run Code Online (Sandbox Code Playgroud)

以及

cd folder
chcp 65001 > nul && dir /B /O:N > list_of_files.txt
Run Code Online (Sandbox Code Playgroud)

生成列表,但使用默认编码:/.

一切都在cmd.exe中工作,但不在.bat文件中.

我已经阅读了主题:stackoverflow.com/questions/2182568/batch-script-is-not-executed-if-chcp-was-called,但它没有帮助.

编辑:我部分解决了我的问题,改为chcp 65001,chcp 1250因为所有字符都在这个编码.但实际上这并没有回答这个问题.

command-line cmd batch-file windows-vista

9
推荐指数
3
解决办法
2万
查看次数

如何在cmd.exe上进行正确的Unicode和ANSI输出重定向?

如果您在Windows上进行自动化并且您正在重定向不同命令的输出(内部cmd.exe或外部,您将发现您的日志文件包含组合的Unicode和ANSI输出(意味着它们无效并且在查看器/编辑器中无法正常加载) ).

是否可以使cmd.exe与UTF-8一起使用?这个问题不是关于stdin/stdout/stderr重定向和Unicode的显示.

我正在寻找一个可以让你的解决方案:

  • 使用UTF-8将内部命令的输出重定向到文件
  • 将支持Unicode的外部命令的输出重定向到文件,但编码为UTF-8.

如果不可能使用批处理文件获得这种一致性,是否有另一种解决此问题的方法,比如使用python脚本编写?在这种情况下,我想知道是否可以单独进行Unicode检测(使用脚本的用户不应该记住被调用的工具是否会输出Unicode,它只是希望将输出转换为UTF-8.

为简单起见,我们假设如果工具输出不是Unicode,则将其视为UTF-8(无代码页转换).

unicode console cmd ansi io-redirection

8
推荐指数
1
解决办法
1万
查看次数