2012-03-28 2 views
5

유럽의 Windows cmd.exe에서이 코드를 실행하고 여기에서 언어에 대한 로컬 설정을 사용합니다. 따라서 디렉토리 이름에 발음 구별 부호를 사용합니다.`dir` 출력을 파일로 리디렉션 한 후 인코딩이 잘못되었습니다.

디렉토리의 이름을 나열하려고 시도하고 올바르게 표시됩니다. 그런 다음 파일에 저장하지만, 메모장에서 열면 발음 구별 부호는 읽을 수 없습니다. 예를 들어, 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 
+0

이 Windows XP 또는 Vista +입니까? –

+0

하나의 질문에 두 가지 문제를 두지 마십시오. 특히 답변이 이미 게시 된 경우에 특히 그렇습니다. 그러면 앞으로 질문과 대답 모두 사용하기가 어려워집니다. 나는 당신에게 권유한다. 1. 마지막 편집을 되 돌린다. 2. 독서 문제에 대한 답을 찾으려고 노력한다. 3. 발견되지 않으면, 새로운 질문을 열어 라. –

답변

12

/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을 읽어보실 것을 권장합니다.

+0

창문에서 창안되었고 시험되었다 –

+0

Oh thanks. 당신이 저에게 추천 한 글을 읽었습니다. 나는 CP 852를 가지고있다. 그런 다음 내가 게시 한 스크립트와 거의 같은 스크립트를 사용했지만 CP 852를 사용했다. 나에게는 변화가 없다. CP를 850으로 변경하면 해당 디렉토리가 없으므로 디렉토리를 찾을 수 없습니다 (다른 문자가 사용됨). 그래서 echo filename x >> output_filename 전에 CP를 설정하고 CP를 다시 설정하려고 할 수 있습니다. 그러나이 경우에도 아무 일도 일어나지 않습니다. 나는 또한 시도했지만 ^> ^> 파일이 생성되지 않았습니다. 나는 cmd 콘솔을 사용할 수 없다. 사용자를위한 설치 파일로서 배치 파일이다. 추신 : 내 언어를 이해합니까? – user1141649

+0

제게 그것은 852와 1250 모두에서 작동합니다. 체코어도 설치되어 있지만 Windows의 제 언어는 영어로 설정되어 있습니다. 그러나 유니 코드 모드에서 즉시 자체적으로 열을 발사하도록 일괄 처리를 편집했습니다. 어쩌면 그것은 당신을 도울 수 있습니다 (적어도 그것이 문제를 인용하는 것을 피합니다). –

0

대체 솔루션 (파일이 이미 생성 된 경우) 파일을 다시 인코딩 할 수 있습니다.

Notepad++

이 기능이 있습니다> 문자가 가지고있는 적절한 문자 세트를 선택
  • 을 설정

    • 이동 인코딩에 우아한는
    • 인코딩으로 돌아 가기 렌더링을> 문자
    • 설정
    • 선택 UTF-8로 변환
    • 파일을 저장하십시오.
  • 관련 문제