2011年5月24日火曜日

&(アンパサンド)とwindowsコマンドライン

これまで複数のバージョンのPKG適用する場合、出荷資産を入れるフォルダを「000_L08-L10一括」のように「連番+バージョン+"-"+バージョン+"一括"」という名前で作成していました。

が、今回久しぶりに2バージョンの適用だったため、「-」ではなくて「&」だなと思い、
「41_HOPL01&L02一括」と命名しました。

が、一発目の適用で資産退避用のバッチが変な動き(記載と違うパスにコピー)をする・・・(汗)

調査した結果、コピー先が"××\○○\41_HOPL01&L02一括"ではなく、"××\○○\41_HOPL01"になっていました。

原因は、パスが「&」によってぶった切られていたことでした。
Linux系列のコマンドでは"&"は文字列ではなく、コマンドラインの区切りを意味する文字として判定されるようです。

資産持ち帰り用バッチファイルなどで「%~dp0」(コマンドファイルのカレントディレクトリ取得)を使用しているため、バッチ自体は変わらなくても、親フォルダが変わることでこの現象が発生しました。

windowsコマンドでは使ってはいけない恐ろしい文字達がたくさんいますが、こいつは一番強烈ですのでご注意を。
なんせ、普通に動きますからね。見落とす可能性ありです。
検証漏れ(汗)というか、そんな危険な文字は使わないようにしましょう。

ちなみに、ソースの根本的な間違いは””の使い方のミスです。
””でちゃんと囲めばいいじゃんと思った方、ナイスです(・∀・)

0 件のコメント:

コメントを投稿