web-dev-qa-db-ja.com

アクセント付き文字を含むBAT / CMDファイルの実行

パスにアクセント付き文字が含まれている場所で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に設定することです(これは私にとってはうまくいきます)。ただし、英語以外のロケールのコードページを設定する必要があり、使用するコードページを特定するのは非常に困難です。

この問題を解決するための代替アプローチはありますか?たぶんコマンドラインオプションか何か他のもの?

14
Kryptic Coder

これを行う別の方法は、Windowsで、wordpad.exeを使用することです。

  1. 実行wordpad.exe
  2. アクセントを付けて、いつものようにスクリプトを書きます
  3. 名前を付けて保存> その他の形式を選択します
  4. 次のように保存することを選択しますテキストドキュメントMS-DOS(* .txt)
  5. ファイル拡張子を.txtから.batに変更します
17
katalin_2003

私は同じ問題を抱えていました、そして この答え それを解決しました。基本的に、ターミナルコードページを変更してから復元するには、スクリプトを一連のコマンドでラップする必要があります。

@echo off
for /f "tokens=2 delims=:." %%x in ('chcp') do set cp=%%x
chcp 1252>nul

:: your stuff here ::

chcp %cp%>nul

チャームのように働いた!

9
Metalcoder

@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

6
Jordan Evens

Notepad ++を使用していますが、「文字セット」を変更するオプションがあります、OEM-USトリックをしました。 ;)

5
genuinefafa

使用する Alt0164 の代わりに¤ Alt164 ñバッチファイル内...奇妙に見えますが、スクリプトを実行する必要があります。

3
Pete Reyna

私も同じ問題を抱えていました。スプレッドシートをあるフォルダから別のフォルダにコピーするための単純なXCOPYバッチファイルを作成しようとしていました。その名前には「é」文字が含まれており、コピーを拒否しました。

KatalinとMetalcoderの提案を使用しようとしても、新石器時代のWindowsXPマシンでは機能しませんでした。それから私は突然考えました:物事をできるだけ単純に保ち(私自身はコンピューターに関しては非常に単純な考えなので)、バッチファイルコードで「é」をワイルドカード文字「?」に置き換えてください。

そして、何を推測しますか?機能した!

0
Keith

Visual Studio Codeを使用すると、使用するエンコーディングを選択できます。右下隅でエンコーディングを選択すると、「エンコーディングで保存」オプションが表示されます。 DOSを選択すると、アクセント付きの文字が保存されます。

0
RaRdEvA