2016-12-03 7 views
0

パラメータがあるコマンドラインからプログラムを実行しようとしています。私のパスワードには「£」という記号があります。私はそれを逃すことができませんでした。バッチファイルで '£'のエスケープ文字

+0

その文字をエスケープする必要はありません。あなたはどんな問題を経験していますか? – SomethingDark

+0

ユニコード値を試しましたか? @記号に似た問題があり、unicodeを使って私のために修正しました。 –

+0

-SomethingDark、私はエコーを直接コマンドプロンプトで入力すると同じことが起こりますが、これをバットファイルに入れて実行しようとすると、このエコーが表示されます。ú-PHClaus私は4つのフォーマットすべてでバットを保存しようとしました。メモ帳は何も役立ちません! – Maharaj

答えて

1

ASCII文字や数字以外の文字も二重引用符で囲んだ非常に良いパスワードのように、パラメータ文字列を囲むことは常に良いことです。

しかし、ASCII tableではないバッチファイルの文字を使用することに注意しなければなりません。つまり、文字のコードポイント値(バイト値)は小数点以下127桁です。

Windowsメモ帳を使用してバッチファイルを作成し、ファイルをANSIエンコーディングで保存すると、コードポイント値が127より大きい文字は、Windows 地域および言語のコードページを使用して保存されます。北米および西ヨーロッパ諸国では​​、これはコードページWindows-1252を使用することを意味します。ポンド記号は、このコードページでは小数点以下163(16進数:A3)です。

コマンドプロセスでは、コマンドプロンプトウィンドウを開き、パラメータなしでCHCP(コードページの変更)コマンドを実行すると表示される別のコードページが使用されます。このコマンドは、Windows 地域および言語の設定にも依存するコマンド処理のアクティブコードページを出力します。コードページOEM 437は、北アメリカ諸国で使用され、西ヨーロッパ諸国では​​OEM 850がコマンド処理内でデフォルトで使用されます。シャープ記号は、コードページ内としても、コード・ページ437の小数点値156を持っているパスワードとを比較し、アプリケーションがパスワードでシャープ記号のために期待するかを知る必要があり言い換えれば850

  • パスワードとしての値163のバイトは、GUIアプリケーションを使用して定義されました。
  • パスワードが156のバイトは、コマンドプロンプトウィンドウから定義されています。
  • または、ポンド記号のパスワードとして使用されるコードページと文字エンコード(ANSI、OEM、UTF-8、UTF-16)に応じて、1つまたはそれ以上の他のバイト値が定義されました。たとえば、UTF-8の文字エンコーディングでは、2バイトを使用して小数点194と163を使用してpound signをエンコードします。

だから、バッチファイルに書き込むものは何ですか?

まあ、あなたはそれを自分で見つけなければなりません。

たとえば、コードページ850を使用してコマンドプロンプトウィンドウからパスワードを定義したため、保存されたパスワードのポンド記号は値156の1バイトです。コードページ1252を使用してバッチファイルをメモ帳で編集するため、バッチファイルのパスワード文字列に値156のバイトを含めるには、パスワードœをパスワードで使用する必要があります。

+0

ありがとう、私は、バッチでCHCP 1252を使用するように考え出しましたが、ポンド記号をエコーし​​ますが、2つの異なるコードページからのものはどうでしょうか?ご質問が間違っている場合はごめんなさい! – Maharaj

+0

文字エンコーディングについて知らないようです。プログラムによって文字がどのように管理されているかについての基本的な知識を得るには、[UltraEdit/UEStudioでのUnicodeの操作](http://www.ultraedit.com/support/tutorials_power_tips/ultraedit/unicode.html)のページを参照することをお勧めします。次に、パスワードを検証するアプリケーションが文字を比較しないことを知る必要があります。アプリケーションはバイトを比較します。 – Mofi

+0

パスワードとして表示される内容は重要ではありません。アプリケーションによってどのバイトがパスワードとして保存されるかは重要です。それらのバイトをテキストエディタでの表示方法やバッチファイルの実行時にコンソールウィンドウに表示する方法とは無関係に、バッチファイル経由でアプリケーションに渡す必要があります。言い換えれば、アプリケーションに渡される0と1のシーケンスは、格納されたパスワードの0と1と同一でなければなりません。世界はコンピュータのバイナリです。 – Mofi

関連する問題