2014.
07.
28
16:01:37
結論から書けば、引数の表記を「%1」ではなく「%~1」のようにすればOKです。
にょろにょろを付けてあげてください。
それでは詳細……というほど詳細でもないですが、書いていきます。
バッチファイルを作っていたのですが、引数チェックを入れたくてですね。
うろ覚えの知識を総動員して、こんな処理を書きましたφ(--)
そしたら、引数が無いときと引数があってもダブルクォート囲みにならないときは良いのですが、
半角スペースがあったりで引数がダブルクォート囲みになるとき、例えば
のような引数を取ると
のようなエラーが表示されるようになってしまったのです。
きっと
の部分が
のように置き換えられてエラーになっちゃうのでしょうね。
てことは、引数がダブルクォート囲みかどうか判定して、
ダブルクォート囲みだったら除外してから処理しなくちゃダメ(--?
うわ~、めんどくせっ(-A-)
と思ったら、にょろにょろを付けて
のようにすれば、勝手に除外してくれました。
あら、楽チン♪
危うく恥ずかしいバグを埋め込んでしまうところでした(--A
やっぱうろ覚えのまま手書きするとダメですね(´・ω・`)
これからは横着しないでコピペします(´-ω-`)
そんな感じ\(--)/
にょろにょろを付けてあげてください。
それでは詳細……というほど詳細でもないですが、書いていきます。
バッチファイルを作っていたのですが、引数チェックを入れたくてですね。
うろ覚えの知識を総動員して、こんな処理を書きましたφ(--)
IF "%1"=="" (
ECHO "引数無し"
) ELSE (
ECHO "引数有り"
)
ECHO "引数無し"
) ELSE (
ECHO "引数有り"
)
そしたら、引数が無いときと引数があってもダブルクォート囲みにならないときは良いのですが、
半角スペースがあったりで引数がダブルクォート囲みになるとき、例えば
"C:\Program Files\hoge.txt"
のような引数を取ると
Files\hoge.ini""=="" の使い方が誤っています。
のようなエラーが表示されるようになってしまったのです。
きっと
IF "%1"=="" (
の部分が
IF ""C:\Program Files\hoge.txt""=="" (
のように置き換えられてエラーになっちゃうのでしょうね。
てことは、引数がダブルクォート囲みかどうか判定して、
ダブルクォート囲みだったら除外してから処理しなくちゃダメ(--?
うわ~、めんどくせっ(-A-)
と思ったら、にょろにょろを付けて
REM %1から%~1に変更
IF "%~1"=="" (
ECHO "引数無し"
) ELSE (
ECHO "引数有り"
)
IF "%~1"=="" (
ECHO "引数無し"
) ELSE (
ECHO "引数有り"
)
のようにすれば、勝手に除外してくれました。
あら、楽チン♪
危うく恥ずかしいバグを埋め込んでしまうところでした(--A
やっぱうろ覚えのまま手書きするとダメですね(´・ω・`)
これからは横着しないでコピペします(´-ω-`)
そんな感じ\(--)/