プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
Windows、バッチファイルの引数から、引数を囲んでいるダブルクォーテーションを除去する
結論から書けば、引数の表記を「%1」ではなく「%~1」のようにすればOKです。
にょろにょろを付けてあげてください。

それでは詳細……というほど詳細でもないですが、書いていきます。

バッチファイルを作っていたのですが、引数チェックを入れたくてですね。
うろ覚えの知識を総動員して、こんな処理を書きましたφ(--)

IF "%1"=="" (
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 "引数有り"
)

のようにすれば、勝手に除外してくれました。
あら、楽チン♪

危うく恥ずかしいバグを埋め込んでしまうところでした(--A
やっぱうろ覚えのまま手書きするとダメですね(´・ω・`)
これからは横着しないでコピペします(´-ω-`)

そんな感じ\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:コマンド/バッチ  thema:パソコンな日々 - genre:コンピュータ  Posted by ササキマコト 

  関連記事