【发布时间】:2015-08-24 12:42:22
【问题描述】:
我对 Windows shell 中的 chcp 65001 命令有疑问。
我需要生成一个文件夹中的文件列表。 于是我运行了 cmd.exe,输入了
cd folder
dir /B /O:N > list_of_files.txt
它有效,但我遇到了一些文件名中的特殊非 ASCII 字符的问题。
所以我加了
chcp 65001
一切正常,但是当我将这些命令放入 .bat 文件时,脚本不起作用。
所以
cd folder
chcp 65001
dir /B /O:N > list_of_files.txt
不生成列表。
和
cd folder
chcp 65001 && dir /B /O:N > list_of_files.txt
还有
cd folder
chcp 65001 > nul && dir /B /O:N > list_of_files.txt
生成列表,但使用默认编码:/。
一切都在 cmd.exe 中有效,但在 .bat 文件中无效。
我已阅读主题:stackoverflow.com/questions/2182568/batch-script-is-not-executed-if-chcp-was-called,但没有帮助。
编辑:
我部分解决了我的问题,将chcp 65001 更改为chcp 1250,因为所有字符都在这种编码中。但实际上这并不能回答问题。
【问题讨论】:
-
把这四个命令放到一个批处理文件中运行会发生什么?
cd folderchcp 65001dir /B /O:Npause -
foxdrive:cmd窗口打开一小会儿就立即关闭
-
你试过第4行的
pause命令了吗? -
是的。它没有停顿。我也试过
timeout 5。但是当我将 65001 更改为其他有效编码时,一切正常。 -
如果您将其粘贴到 cmd 窗口中 - 您会看到什么?
chcp 65001 & dir /B /O:N & pause
标签: batch-file command-line cmd windows-vista