Adsenseリンクユニット

2015年2月15日日曜日

バッチファイルのパラメータでフォルダパスを取得する方法

Windowsでバッチファイルを作成する際に、バッチファイルから他のバッチファイルの呼び出しを行ったり、ログファイルを作成したりすることがあると思います。
この際、バッチファイルのフォルダパスを取得したり、バッチファイルの名前を取得できると便利なので紹介します。

バッチファイルのフォルダパスを取得する方法

バッチファイルから別のバッチファイルを呼び出すには、相対パスで呼び出せばよいのでその場は必要ありません。

ところが、バッチファイルを「管理者として実行」で動作させるとカレントのパスがWindowsのシステムフォルダ(Window7の場合C:\Windows\system32)になってしまいます。
相対パスは、カレントフォルダから相対になるため、バッチファイルが格納されているフォルダからのパスになりエラーとなります。

次の方法で簡単に取得できます。


%~dp0

これだけす。

バッチファイルに

echo %~dp0

と記述してバッチファイルを実行してみると結果を確認することが出来ます。
この際、注意点が1つだけあります。フォルダパスの最後に\が付くということです。



バッチファイルのファイル名を取得する方法

私は、良くバッチファイルの実行結果は、バッチファイルと同じファイル名で拡張子をlogにしています。バッチファイルの拡張子を除いたファイル名は、次のように書きます。

%~n0

バッチファイルに

echo %~n0

と記述すると結果を確認できます。
バッチのログファイルをフルパスは、次のように書きます。

%~dp0%~n0.log

上記のフォルダやファイル名の取得は、コマンド引数の0番が、コマンドファイルそのものの情報を取得できることを利用した方法です。
コマンドプロンプトで「call /?」を実行すると、下記のようなコマンド引数の仕様を確認することが出来ますよ。



%1はコマンド引数の1番目のことです。%0とするとバッチファイル自身の情報になります。ココがミソです。

とてもシンプルに記述できますのでオススメな記述方法です。

スポンサードリンク