encoding - 将 `dir`输出重定向到文件后,编码不正确

标签 encoding batch-file cmd

我在欧洲的Windows cmd.exe上运行此代码,在这里使用本地设置作为我的语言。因此,我在目录名称中使用变音符号。

我尝试列出目录的名称,它们显示正确。然后将它们保存到文件中,但是当我在记事本中打开它时,变音符号不可读:例如,我使用Střední Čechy而不是Stýednˇ ¬echy

我做错了什么,我该如何纠正?

@echo off
del directories.conf
FOR /F "delims=!" %%R IN ('dir * /b /a:d /o:n') DO (

 IF EXIST "%%R\scenery" ( 
  echo %%R
  echo %%R >> directories.conf
 ) ELSE (ECHO NOT INCLUDED %%R)

)
Echo Directory list created...
pause

最佳答案

尝试使用/u开关启动cmd.exe。这将导致cmd以UTF-16写入。

另外,您还需要使用chcp 1250切换到代码页1250(中欧的ANSI)。

您可以在批处理脚本中执行此操作。我为你做了一个。结构为:

.\Jižní Morava
.\Jižní Morava\scenery
.\Pelhřimov
.\Pelhřimov\scenery
.\Nic moc výlet
.\Střední Čechy
.\Střední Čechy\scenery

和脚本:
@echo off

if _%1_==_main_ (
    call :main
) else (
    cmd /u /c "%0 main"
)
goto :eof

:main
    chcp 1250
    del directories.conf
    for /F "delims=!" %%R in ('dir * /b /a:d /o:n') do (
        if exist %%R\scenery (
            echo %%R
            echo %%R >> directories.conf
        ) else (
            echo not included: %%R
        )
    )
    echo Directory list created...
    pause
goto :eof

另外,我建议您阅读andrewdotn's great answer的相关问题。

关于encoding - 将 `dir`输出重定向到文件后,编码不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9905740/

相关文章:

Java 媒体框架 MP3 插件

java - 如何在 Java 中将非特殊字符编码为 HTML 实体

java - 解码在 iOS 中编码的 Java 字符串文件 (Base64)

windows - 复制最新/最新文件夹窗口的内容

batch-file - npm run build with .bat 防止窗口关闭

windows - 批处理文件编码

python - 将版权符号放入 Python 文件

batch-file - 批处理 - 计算当前文件夹和子文件夹中文件的行数

windows - 如何使用CMD制作批处理文件?

windows - echo/batch redirect to file automatically appends space?