2014.
03.
13
14:51:01
結論から書けば
で、バッチファイル自身のパスを取得できます。
例えばこんなバッチファイルを動かすとφ(--)
■C:\test_dir\test.bat
こんな結果になりますφ(--)
それでは理屈を見ていきましょう。
実を言うと……
Windows、バッチファイル(.bat)に引数を渡す
の記事で理屈は全部書いちゃったんですけどね。
「%~dp0」に絞って簡単に補足していきます。
まず「%0」はバッチファイル自身のファイル名(パス付き)を表します。
例えばこんなバッチファイルを動かすとφ(--)
■C:\test_dir\test2.bat
こんな結果になりますφ(--)
次にパラメータの受け取りには特殊な指定方法があります。
「%~」+「指定」+「パラメータの位置」な並びで指定することで、
パラメータからファイル名だけ取得したりパスだけ取得したりできるのです。
例えば「%~d1」と指定すると1つ目のパラメータからドライブ文字だけ取得します。
同様に「%~p1」と指定すると1つ目のパラメータからパスだけ取得できるのです。
例えばこんなバッチファイルがあるとしてφ(--)
■C:\test_dir\test3.bat
コマンドライン上からこんな呼び出し方をするとφ(--)
こんな結果になりますφ(--)
さらに!
この特殊な指定方法は複数組み合わせることができるのです。
「%~」+「指定」+「パラメータの位置」の「指定」の部分にいっぱい書けます。
例えば「%~nx1」と書くと、ファイル名を取得する「%~n1」と拡張子を取得する「%~x1」が合体して
「ファイル名+拡張子」が取得できるのです。
同じ理屈で「%~dp1」と書くと、ドライブ文字を取得する「%~d1」とパスを取得する「%~p1」が合体して
「ドライブ名+パス」(つまりフルパス)が取得できるのです。
いよいよ大詰めです。
「%0」でバッチファイル自身のパス付きファイル名を取得できました。
「%~dp1」でパラメータのフルパスが取得できました。
がっ「%0」\(--)/「%~dp1」
たい(--)//「%~dp0」
と言うわけで「%~dp0」でバッチファイル自身のパスを取得できるのです。
同じ理屈でいろいろな情報を取得できるので、仕組みを理解しておくと便利ですよ。
よく使うのは「%~nx0」でバッチファイル自身のファイル名だけを取得したりですかね。
「%~nxt1」で、引数で指定されたファイルのファイル名と更新日時を取得して
あんなことやこんなことができたりもします。
ってなところで、完了\(--)/
%~dp0
で、バッチファイル自身のパスを取得できます。
例えばこんなバッチファイルを動かすとφ(--)
■C:\test_dir\test.bat
@echo off
echo %~dp0
pause
echo %~dp0
pause
こんな結果になりますφ(--)
C:\test_dir\
続行するには何かキーを押してください . . .
続行するには何かキーを押してください . . .
それでは理屈を見ていきましょう。
実を言うと……
Windows、バッチファイル(.bat)に引数を渡す
の記事で理屈は全部書いちゃったんですけどね。
「%~dp0」に絞って簡単に補足していきます。
まず「%0」はバッチファイル自身のファイル名(パス付き)を表します。
例えばこんなバッチファイルを動かすとφ(--)
■C:\test_dir\test2.bat
@echo off
echo %0
pause
echo %0
pause
こんな結果になりますφ(--)
C:\test_dir\test2.bat
続行するには何かキーを押してください . . .
続行するには何かキーを押してください . . .
次にパラメータの受け取りには特殊な指定方法があります。
「%~」+「指定」+「パラメータの位置」な並びで指定することで、
パラメータからファイル名だけ取得したりパスだけ取得したりできるのです。
例えば「%~d1」と指定すると1つ目のパラメータからドライブ文字だけ取得します。
同様に「%~p1」と指定すると1つ目のパラメータからパスだけ取得できるのです。
例えばこんなバッチファイルがあるとしてφ(--)
■C:\test_dir\test3.bat
@echo off
echo %~d1
echo %~p1
pause
echo %~d1
echo %~p1
pause
コマンドライン上からこんな呼び出し方をするとφ(--)
C:\test_dir\test3.bat "C:\Program Files\desktop.ini"
こんな結果になりますφ(--)
C:
\Program Files\
続行するには何かキーを押してください . . .
\Program Files\
続行するには何かキーを押してください . . .
さらに!
この特殊な指定方法は複数組み合わせることができるのです。
「%~」+「指定」+「パラメータの位置」の「指定」の部分にいっぱい書けます。
例えば「%~nx1」と書くと、ファイル名を取得する「%~n1」と拡張子を取得する「%~x1」が合体して
「ファイル名+拡張子」が取得できるのです。
同じ理屈で「%~dp1」と書くと、ドライブ文字を取得する「%~d1」とパスを取得する「%~p1」が合体して
「ドライブ名+パス」(つまりフルパス)が取得できるのです。
いよいよ大詰めです。
「%0」でバッチファイル自身のパス付きファイル名を取得できました。
「%~dp1」でパラメータのフルパスが取得できました。
がっ「%0」\(--)/「%~dp1」
たい(--)//「%~dp0」
と言うわけで「%~dp0」でバッチファイル自身のパスを取得できるのです。
同じ理屈でいろいろな情報を取得できるので、仕組みを理解しておくと便利ですよ。
よく使うのは「%~nx0」でバッチファイル自身のファイル名だけを取得したりですかね。
「%~nxt1」で、引数で指定されたファイルのファイル名と更新日時を取得して
あんなことやこんなことができたりもします。
ってなところで、完了\(--)/