2011/09/06 [火]
Windows のコマンドプロンプトで、バッチファイルを実行するとき、echo コマンドを使うと文字列を表示することができます。例えば、
と画面に表示することができます。ではここで <a href="http://seclan.dll.jp/"> と表示してみましょう。単純にこのままやろうとすると、次のようになってしまいます。
実は、< や > の記号はコマンドラインではそれぞれリダイレクトを表す記号なのでそのまま使用することはできないのです。例えば、記号 < は、その記号の右側にファイル名を書いて、そのファイルの内容を左側のプログラムに渡す、そして記号 > は表示内容をファイルに書き出すために用いられます。前述の例では a href="http://seclan.dll.jp/" をファイル名と解釈したのでファイルが見つかりませんと言ってきているわけです。ちなみに記号 > は例えば次のように使うことができます。
さて、これを回避するためには、表示する文字列を "" で囲めばよいのですが、それをやると次のように余計な "" も表示されてしまいます。
そこで、< や > を機能させないための前置子を書きます。Windows では ^ 記号を使います。この記号を前置することで、後続の一文字が通常の記号であると認識されます。
単に ^ 記号を使いたいときは、^^ のように二つつなげて書きます。また、この書き方はバッチファイルだけではなく、コマンドプロンプトから起動する通常のプログラムの引数にも適用できます。ただし、Windows API から直接起動するときは ^ は通常記号として扱われるのであしからず。
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:\> |
そこで、< や > を機能させないための前置子を書きます。Windows では ^ 記号を使います。この記号を前置することで、後続の一文字が通常の記号であると認識されます。
C:\>echo ^<a href="http://seclan.dll.jp/"^> <a href="http://seclan.dll.jp/"> C:\> |
単に ^ 記号を使いたいときは、^^ のように二つつなげて書きます。また、この書き方はバッチファイルだけではなく、コマンドプロンプトから起動する通常のプログラムの引数にも適用できます。ただし、Windows API から直接起動するときは ^ は通常記号として扱われるのであしからず。
by seclan