Pertanyaan Enkode yang salah setelah mengarahkan output `dir` ke file


Saya menjalankan kode ini di Windows cmd.exe di Eropa dan saya menggunakan pengaturan lokal di sini, untuk bahasa saya. Jadi saya menggunakan diakritik dalam nama direktori.

Saya mencoba untuk daftar nama direktori dan mereka ditampilkan dengan benar. Lalu saya menyimpannya ke dalam file, tetapi ketika saya membukanya di notepad, diakritik tidak terbaca: misalnya, daripada Střední Čechy saya sudah Stýednˇ ¬echy.

Apa yang saya lakukan salah dan bagaimana saya bisa memperbaikinya?

@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

6
2018-03-28 10:36


asal


Jawaban:


Coba mulai cmd.exe dengan / u switch. Itu akan menyebabkan cmd menulis dalam UTF-16.

Juga Anda perlu beralih ke kode halaman 1250 (ANSI untuk Eropa Tengah) menggunakan chcp 1250.

Anda dapat melakukannya di dalam skrip batch Anda. Saya membuatkan satu untuk Anda. Strukturnya adalah:

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

Dan naskahnya:

@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

Saya juga merekomendasikan Anda untuk membaca Jawaban bagus andrewdotn ke pertanyaan terkait.


12
2018-03-28 11:04



Sebagai solusi alternatif (jika file tersebut sudah dihasilkan) Anda bisa saja re-encode file Anda.

Notepad ++ memiliki fitur ini:

  • Pergi ke Pengkodean> Set karakter
  • Pilih set karakter yang tepat yang memiliki render anggun
  • Kembali ke Pengkodean> Set karakter
  • Memilih Konversikan ke UTF-8
  • Simpan file Anda

1
2018-05-30 14:11