パスにアクセント付き文字が含まれている場所でEXEファイルを実行するように指示されたWindowsバッチファイルがあります。バッチファイルの内容は次のとおりです。
@echo off
C:\español\jre\bin\Java.exe -version
C:\español\ jre\bin\Java.exe-このパスは存在し、適切です。このコマンドはcmd.exeで直接実行できます。しかし、bat/cmdファイルからコマンドを実行すると、「システムは指定されたパスを見つけることができません」と表示されません。
これを修正する1つの方法は、コードページを1252に設定することです(これは私にとってはうまくいきます)。ただし、英語以外のロケールのコードページを設定する必要があり、使用するコードページを特定するのは非常に困難です。
この問題を解決するための代替アプローチはありますか?たぶんコマンドラインオプションか何か他のもの?
これを行う別の方法は、Windowsで、wordpad.exeを使用することです。
- 実行wordpad.exe
- アクセントを付けて、いつものようにスクリプトを書きます
- 名前を付けて保存> その他の形式を選択します
- 次のように保存することを選択しますテキストドキュメントMS-DOS(* .txt)
- ファイル拡張子を.txtから.batに変更します
私は同じ問題を抱えていました、そして この答え それを解決しました。基本的に、ターミナルコードページを変更してから復元するには、スクリプトを一連のコマンドでラップする必要があります。
@echo off
for /f "tokens=2 delims=:." %%x in ('chcp') do set cp=%%x
chcp 1252>nul
:: your stuff here ::
chcp %cp%>nul
チャームのように働いた!
@echo off
があるため、バッチがコマンドプロンプトに何を送信しているかを確認できません。それをオフにして問題を再現すると、次の出力が表示されるため、ñ
文字が誤って解釈されるようです。
C:\espa±ol\jre\bin\Java -version
The system cannot find the path specified.
コマンドプロンプトからバッチファイルにコマンドをエコーすることで、それを機能させることができました。
echo C:\español\jre\bin\Java.exe -version>>test.bat
これは、プロンプトが探しているコマンドに文字を変換するようですが、英語のロケールを設定してテストしただけなので、すべての状況で機能するかどうかはわかりません。また、メモ帳などのテキストエディタでバッチを開くと、間違って表示されます(C:\espa¤ol\jre\bin\Java.exe
)
Notepad ++を使用していますが、「文字セット」を変更するオプションがあります、OEM-US
トリックをしました。 ;)
使用する Alt + 0164 の代わりに¤ Alt + 164 ñバッチファイル内...奇妙に見えますが、スクリプトを実行する必要があります。
私も同じ問題を抱えていました。スプレッドシートをあるフォルダから別のフォルダにコピーするための単純なXCOPYバッチファイルを作成しようとしていました。その名前には「é」文字が含まれており、コピーを拒否しました。
KatalinとMetalcoderの提案を使用しようとしても、新石器時代のWindowsXPマシンでは機能しませんでした。それから私は突然考えました:物事をできるだけ単純に保ち(私自身はコンピューターに関しては非常に単純な考えなので)、バッチファイルコードで「é」をワイルドカード文字「?」に置き換えてください。
そして、何を推測しますか?機能した!
Visual Studio Codeを使用すると、使用するエンコーディングを選択できます。右下隅でエンコーディングを選択すると、「エンコーディングで保存」オプションが表示されます。 DOSを選択すると、アクセント付きの文字が保存されます。