encoding - significa - redirigir salidas linux
Codificación incorrecta después de redirigir la salida `dir` a un archivo (2)
Pruebe a iniciar cmd.exe con el modificador / u. Eso hará que cmd escriba en UTF-16.
También necesita cambiar a la página de códigos 1250 (ANSI para Europa Central) usando chcp 1250
.
Puedes hacerlo dentro de tu script por lotes. Hice uno para ti. La estructura es:
./Jižní Morava
./Jižní Morava/scenery
./Pelhřimov
./Pelhřimov/scenery
./Nic moc výlet
./Střední Čechy
./Střední Čechy/scenery
Y el guion:
@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
También te recomiendo que leas la gran respuesta de andrewdotn a una pregunta relacionada.
Ejecuto este código en Windows cmd.exe en Europa y utilizo la configuración local aquí, para mi idioma. Entonces uso diacríticos en los nombres de los directorios.
Intento enumerar los nombres de los directorios y se muestran correctamente. Luego los guardo en un archivo, pero cuando lo abro en el bloc de notas, los signos diacríticos no son legibles: por ejemplo, en lugar de Střední Čechy
tengo Stýednˇ ¬echy
.
¿Qué hice mal y cómo puedo corregirlo?
@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
Como solución alternativa (si el archivo ya está generado), puede volver a codificar su archivo.
Notepad ++ tiene esta característica:
- Vaya a Codificación> Juegos de caracteres
- Seleccione el juego de caracteres apropiado que tenga un renderizado elegante
- Volver a Codificación> Conjuntos de caracteres
- Seleccione Convertir a UTF-8
- Guarde su archivo