2012-03-28 6 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

特に、回答がすでに投稿されている場合は、2つの別々の問題を1つの質問に入れないでください。これにより、将来的に質問と回答の両方が利用できなくなります。私はあなたに提案する1.最後の編集を元に戻す2.問題を読むための答えを見つけようとする3.見つからなければ新しい質問を開く –

答えて

12

/uスイッチを使用してcmd.exeを起動してみてください。これにより、cmdがUTF-16で記述されます。

また、chcp 1250を使用してコードページ1250(中央ヨーロッパ向けのANSI)に切り替える必要があります。

バッチスクリプト内で実行できます。私はあなたのために1つを作った。構造は次のとおりです。

.\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

Windows 7で作成してテスト済み –

+0

ああありがとう。あなたが私に紹介した記事を読んだ。私はCP 852を持っています。あなたが投稿したのとほぼ同じスクリプトを使いましたが、私はCP 852を使いました。 CPを850に変更する必要がある場合、そのようなディレクトリが存在しないため(異なる文字が使用される)、ディレクトリが見つかりません。だから、私はエコーfilenamex >> output_filenameの前にCPを設定し、CPを戻すようにすることができます。しかし、この場合も何も起こりません。私も試しました^> ^>しかし、ファイルは作成されませんでした。私はcmdコンソールを使用することはできません、それはユーザーのためのインストールファイルとしてバッチファイルです。 PS:私の言語を理解していますか? – user1141649

+0

私にとっては、852と1250の両方で動作します。私の言語は英語ですが、チェコ語もインストールされています。しかし、バッチを編集して、すぐにUnicodeモードでそれ自体を熱くするようにしました。たぶんそれはあなたを助けるかもしれません(少なくとも引用問題を避けること)。 –

0

代替解決策(ファイルがすでに生成されている場合)は、ファイルを再エンコードすることができます。バックエンコーディング>文字が を設定する優雅なレンダリング

  • ゴーを持って適切な文字セットを選択しエンコーディング>文字が
  • を設定する

    • ゴー:

      Notepad++は、この機能を持っています

    • 選択UTF-8に変換
    • ファイルを保存します
  • 関連する問題