2012-12-02 5 views
5

このコード:このバッチファイルでは、°、±&2が°、▒&²をどのように生成しますか?

@echo off 
    set /p a=Installing [<nul 
    set b=1 
    :loop 
    if %b% leq 2 set /p a=°<nul 
    if %b% gtr 4 if %b% leq 6 set /p a=±<nul 
    if %b% gtr 6 if %b% leq 8 set /p a=²<nul 
    if %b% gtr 8 if %b% leq 10 set /p a=±<nul 
    if %b% gtr 10 set /p a=°<nul 
    choice /t 1 /c y /d y>nul 
    set /a b=%b%+1 
    if %b%==13 (echo ]&goto :eof) 
    goto :loop 

が... http://www.experts-exchange.com/OS/Microsoft_Operating_Systems/MS_DOS/A_1237-DOS-ECHO-text-to-previous-line-by-Paul-Tomasi.html#c18182から来たとCMDウィンドウで、以下の出力を生成します

Installing [░░▒▒▓▓▒▒░░] 

しかし、私はどのようにこれまでのようにグーグルによる説明を見つけるように見えるカント働く他の拡張アスキー文字をその場所に代入すると、「コマンドの構文が間違っている」ように見えるので、これがハックであることを推測するだけで、何かが拡張アスキーセットの下位文字にこれらの文字を交換します。 - デザイナーのトリックです。

誰かがこのようなcmd/cmdプログラムの機能についてもっと知るための良いウェブサイトを示唆することができれば、それは高く評価されます。

+0

[cmdが使用しているフォントが原因である可能性がありますか?](http://stackoverflow.com/questions/1259084/what-encoding-code-page-is-cmd-exe-using) – acattle

+0

Answer、でも興味深い: 'type mybatchfile.bat'のように、コマンドラインからバッチファイルに対して' type'を実行してみてください。私のテキストエディタは '±'と残りの部分を表示しますが、 'type'コマンドは'░'と残りの部分を表示します。バッチファイル 'type'に' ''を入れると 'ª'となります。 'edit'コマンドラインエディタは、Windowsのものではなく、コマンドラインの文字も表示します。 acattのリンクが示唆するように、おそらくフォントのものです。 – user1201210

+0

@acattle - 私は3つのフォントをcmdで利用できるようにしようとしています(Rasterフォント、上記の結果はConsolas&Lucida Consoleです)。コンソラスは°の空白文字を持っていましたが、それとLucida Consoleの両方がコマンドを生成したのは、2番目の間違ったエラーです(通常とは異なります)。それがcmdであり、ワードプロセッサ(例えば)が、フォントごとに異なった文字が存在するのではないかと疑うでしょう。 – user66001

答えて

4

これは、エディタがDOSとコマンドラインで使用するものとは異なるエンコーディングを使用しているからです。

参照文字ここでは176から178:列DOSとWINで

http://academic.evergreen.edu/projects/biophysics/technotes/program/ascii_ext-pc.htm

文字ペアは、同じ数値で表現されますが、DOS(したがって、コマンドライン)およびWindows(テキストエディタ)これらの数字を別の記号として表示します。

あなたのテキストファイルは一連のバイト(数字)であり、これらのバイトの1つに値176があります。DOS code page 437では、慣習上の理由からグリフやコマンドラインを使用していましたが、 DOSと同じエンコーディングでした。しかし、Windows上で動作するテキストエディタは、古いWindows-1252エンコーディングを使用してファイルを読み取っているようです(176は°を意味します)。

437をサポートするエディタを見つけようとすると、このような混乱を避けることができます。

+0

ありがとう@kamilk - 私は今理解しています。しかし、いくつかのフォローアップの質問 - 1)何らかのプログラム(cmd.exeやメモ帳など)がコードページの途中で使用していることを伝えるためには何かありますか? 2)私は、フォントがコードページに結びついていることを推測して、cmdウィンドウで使用されている同じフォントがメモ帳の同じフォントとどう違うのかを説明していますか?そして最後に、3)≡のためにそれらの1つを置き換えるとき、なぜ「コマンドの構文が間違っているのか」に関する何らかのアイデアがある(いずれも理解できない理由のために、Alt + 240によって得ることができない私はこれをメモ帳でWin7で実行しています) – user66001

+0

...しかし、WinXPのメモ帳で私に教えてくれます) – user66001

+0

ATTN @kamilk - あなたの正解を記入して幸いです。将来の利益。 – user66001

関連する問題