コマンドプロンプトで & をエスケープして渡す
コマンドプロンプトのstart
コマンドを使ってURLを開くとき &
が邪魔になる。
例えばこんな感じ。
C:\> start http://www.google.co.jp/?q=hello+world&gws_rd=ssl 'gws_rd' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。
&
ってのは特殊な文字で、複数のコマンドを順次実行していくときに使う。
例えば dir 連続して2つ実行するには、こんな感じ。
C:\> dir & dir
もうちょっとまともな例を挙げると、こうかな。
C:\> copy masterup\*.iso e:\usb\factory & msg * "\(^o^)/オワタ"
普通なら " で囲えば無効化できるのだが、
C:\> notepad "abc&def.txt"
どうもstartやechoなどの内部コマンドでは、これが使えない様子。
C:\> echo "hello&world" "hello&world"
こういう場合は ^ を使ってエスケープすれば通る。
C:\> echo hello^&world hello&world
前述のURLをstartを使って開くのも同様に &
を ^&
にすれば大丈夫。
ダメ C:\> start http://www.google.co.jp/?q=hello+world&gws_rd=ssl ↓ 通る C:\> start http://www.google.co.jp/?q=hello+world^&gws_rd=ssl
コマンドプロンプトは、ここらへんの処理があまり洗練されていないので困る。