- blogs:
- cles::blog
2014/05/05

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


先日、.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 を使ってログインすることができます。
サイト内検索
検索ワードランキング
へぇが多いエントリ
閲覧数が多いエントリ
1 . アーロンチェアのポスチャーフィットを修理(111987)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110620)
3 . 年次の人間ドックへ(110250)
4 . 2023 年分の確定申告完了!(1つめ)(109794)
5 . 三菱鉛筆がラミーを買収(109691)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110620)
3 . 年次の人間ドックへ(110250)
4 . 2023 年分の確定申告完了!(1つめ)(109794)
5 . 三菱鉛筆がラミーを買収(109691)
cles::blogについて
Referrers