質問: windowsバッチファイルのファイル名にascii以外の文字が含まれるファイル 通常の(西洋の)windowsコンピュータには、ファイルがありますфайл.txt ファイル名に非ascii文字が含まれています。 .batファイルから次のことを行うにはどうすればよいですか?dir файл.txt ren файл.txt file.txt 等。?上記のコマンドをファイルmybat.bat(utf-8またはutf-16エンコーディングを使用)に配置しようとしましたが、cmd /u /c mybat.batとして実行しても機能しません。注:問題は、これらの文字をバッチファイルに入れる方法ではなく、バッチファイルに期待どおりの動作をさせる方法です(私の例では、ファイルを一覧表示してから名前を変更します)。注:dir > log.txtコマンドは、ファイルфайл.txtを????。txtとして表示します。ただし、dirは、このファイルをфайл.txtとして画面に正しく表示します。
回答: あなたの主な問題はフォントです https://stackoverflow.com/questions/9321419/unicode-utf-8-text-file-gibberish-on-windows-console-trying-to-display-hebrew with疑問符が表示されない正しいフォント。したがって、コマンドプロンプトにcouriernewを追加する必要があります。次に、そのような文字を入力または表示/エコーできるようになります。その後、一部のコマンドに問題があることがわかった場合は、chcp 65001を試してください(質問への回答として、chcp 65001はそのcmdプロンプトウィンドウにのみ影響しますのでご安心ください)。\u7fを超える文字でリダイレクトを機能させるには、chcp65001が必要です。これらの文字を含むファイルを書き込むためのdir >asdfコマンドには、chcp 65001が必要です。ただし、renコマンドは65001がなくても正常に機能します。注-opはこれに対する修正を指摘しています。彼のフォントは問題ありませんでした。しかし、彼はchcp65001を必要としていました。chcp 65001が必要なもう1つのケースは、バッチファイルがutf8にある場合です。それ以外の場合は、приветのような文字だけでバッチファイルを実行しても、それらは疑問符に変換されます。opは、メモ帳がbomを使用したutf-8で保存するのに対し、chcp65001はbomを使用しないutf-8であるという問題の優れた回避策も指摘しています。そして、bomを使用してutf-8としてエンコードされたバッチファイルがある場合、それはちょうど例えばdir、またはechoприветの場合、cmdのエンコーディングが65001であっても、機能しません。cmdはbomを最初の行に混在させるためです。したがって、回避策は、コマンドを2行目から開始することです。 (または、bomなしでutf-8として保存するテキストエディターを使用することもできます)。