seclan のほえほえルーム

| |

Win9x: echo コマンドで < > 記号を出力する方法

・
2000/05/01 []

 Win9x のバッチファイルなどでは echo コマンドを使うと文字列を表示することができます。例えば、
C:\>echo hello
hello

C:\>

と画面に表示することができます。ではここで <a href="http://seclan.dll.jp/"> と表示してみましょう。単純にこのままやろうとすると、次のようになってしまいます。
C:\>echo <a href="http://seclan.dll.jp/">
ファイルが見つかりません.

C:\>

実は、< や > の記号はコマンドラインではそれぞれリダイレクトを表す記号なのでそのまま使用することはできないのです。例えば、記号 < は、その記号の右側にファイル名を書いて、そのファイルの内容を左側のプログラムに渡す、そして記号 > は表示内容をファイルに書き出すために用いられます。前述の例では a href="http://seclan.dll.jp/" をファイル名と解釈したのでファイルが見つかりませんと言ってきているわけです。ちなみに記号 > は例えば次のように使うことができます。
C:\>echo hello > hello.txt

C:\>type hello.txt
hello

C:\>

さて、これを回避するためには、表示する文字列を "" で囲めばよいのですが、それをやると次のように余計な "" も表示されてしまいます。
C:\>echo "<a href="http://seclan.dll.jp/">"
"<a href="http://seclan.dll.jp/">"

C:\>

この余分な "" を表示させないために裏技を駆使します。
C:\>echo"<a href="http://seclan.dll.jp/">^@"
<a href="http://seclan.dll.jp/">

C:\>

まず、echo の直後の一文字は表示されないのでそれを利用して、echo の直後に " をおきます。また制御コード 0、つまり文字コード 0 の ^@ を利用します。これが文字列中に存在するとそれ以降の文字列が表示されないようです(なんかバグっぽいですが...)。したがって " が表示されなくなります。なお ^@ はコマンドラインから直接入力できるかどうかは微妙です(^ と @ ではありません。^@ で一文字です。)。文字コード 0(^@) を直接挿入できるエディタを使ってバッチファイルを作成するといいでしょう。


by seclan

関連


| |

 

配信

5.57 msec