BLOGTIMES
2014/05/05

ドラッグアンドドロップで動く bat ファイルを作るときに

  bat  windows 
このエントリーをはてなブックマークに追加

先日、.msg を .eml に変換する作業をしたときに、ドラッグアンドドロップで対象のファイルを処理するためには "%~1" という変数を使えば良いことがわかりました。それ以外にも、現在のパスが %~dp0 でとれたりするがちょっと不思議だったので、このあたりのバリエーションをちょっと調べてみました。

例えば Linux でシェルスクリプトを書くときには $0 が実行しているシェルスクリプトのファイルパスで、パラメータは $1, $2, $3 という風に取得することができまが、 下記によると基本的にはこれと同様に $0 -> %0 という考え方でいいようです。さらに「修飾子を使用するには、パーセント (%) 記号の後にチルダ (~) 記号を入力してから、適切な修飾子を入力します (%~modifier)」とあるので、この修飾子を使うといろいろと便利なことができるわけですね。

バッチ パラメータを使用する

Cmd.exe には、バッチ パラメータ展開変数 %0 ~ %9 があります。バッチ ファイルでバッチ パラメータを使用する場合、%0 はバッチ ファイル名で置き換えられ、%1 ~ %9 はコマンド ラインで入力するそれぞれの引数で置き換えられます。%9 を超えて引数にアクセスする場合は、shift コマンドを使用する必要があります。shift コマンドの詳細については、「Shift」を参照してください。バッチ パラメータ %* は、バッチ ファイルに渡される %0 を除くすべての引数を参照するワイルドカードです。

これによると、 %~dp0%1~d~p 修飾子を適用した結果を取得ということになるようです。これはそれぞれ「%0 をドライブ文字に展開」と「%0 をパスに展開」という効果を持つので、結果として現在実行中の bat ファイルのパスをドライブレター付の絶対パスで取得できていたというわけです。

覚えて置くとけっこう高機能な bat スクリプトが書けそうです。


    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/6666
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン