サイトアイコン スグブログ

【bat】バッチでdp0の使い方!その他のオプションも合わせてご紹介!

sweets

batファイル「dp0」の意味と使い方を、現役エンジニアの筆者が教えます!

dp0の使用方法が知りたい人

batでdp0とよくわからない記号が出てきましたがどのように使用するのかわかりません?

batファイルでは便利な機能などもあります。今回の「dp0」もそのうちの一つです。

今回はこのdp0を使用してbatファイルを動かして、中身を理解しましょう!

windowsのプロンプトで使用できるbatやpythonやphpを使用して、業務効率化やWebサイトを作成しております。javaやシェルスクリプトなど、様々なプログラミングを行った実績ありの筆者です。

batでdp0の使い方!

ではdp0の使い方を見ていきます。まずは使用方法はbatファイルを作成して以下のコードを記述します。

@echo off
echo %~dp0
pause

dp0は簡単に言うと、batファイルのある絶対パスを入れている変数のようなものです。※batファイル名は省きます。

%~を前につければ展開出来ます。

このbatファイルを「C:\script\bat\」配下において実行してみます。

C:\script\bat\

batファイル名を省いた絶対パスを取り出す事が出来ます。

batファイル名を除いた絶対パス以外を取得する

batファイルでdp0はbatファイル名を除いた絶対パス以外を取得できました。

その他にもbatファイルの様々な情報を取得できますので、簡単にまとめておきます。

オプション意味
%~d0バッチファイルのドライブ名
%~p0バッチファイルのパス
%~dp0バッチファイルのドライブ名+パス
%~f0バッチファイル名を含めたパス
%~n0バッチファイル名
%~x0バッチファイルの識別子
%~nx0バッチファイル名(識別子含む)
%~s0バッチファイル名を含めたパス(省略形)
%~a0バッチファイルの属性
%~t0バッチファイルの更新日時
%~z0バッチファイルの容量(バイト)
その他の項目を取得するオプション一覧

実践:batでdp0を使用したコード

では実際に業務でも使用できるdp0を使用したコード例をみていきます。

以下のbatファイルを作成してください。

@echo off
set file=%~dp0test.txt
if exist %file% (
 echo fileは既に%~dp0にあります!
) else (
 echo fileはないので作成します!
 echo > %file%
)
pause

batでdp0を使用したファイルの説明

このコードの概要をざっくりいうと、batファイルのあるフォルダ「test.txt」のファイルが存在するかを判断し、その結果で処理を分けています。

setで存在して欲しい絶対パスを含めたファイル名「file」変数に格納しています。

その変数と「exist」を使用してファイルの存在を確認しています。ファイルの存在を確認する方法の詳細は以下の記事参照

ファイルの存在の有無で処理をif文で分けています。batでのif文の詳細は以下の記事参照!

「test.txt」のファイルが存在すれば、その絶対パスにファイルがある事を表示しています。

存在しなければ、絶対パスを含めたファイル名を使用してファイルを作成しています。

batでdp0を使用したファイルを実行してみる

ファイルがない状態でこのbatファイルを実行してみます。

fileはないので作成します!

上記表示されてdp0のパスに「test.txt」ファイルが作成されていると思います。

もう一度このbatファイルを実行します!

fileは既にC:\script\bat\25_dp0\にあります!

今度はファイルが存在しているので、dp0の絶対パスにファイルがあることが表示されました!

batファイルで日本語が文字化けする場合

ここで以下の様に日本語が文字化けした場合の解決方法は文字コードを変更することです!

file縺ッ縺ゅj縺セ縺呻シ・

文字コードを変更するやり方はbatファイルを編集します。

文字化けしたbatファイルを右クリックして「編集」をクリックします。

batァイルが開くので、「ファイル」から「名前を付けて保存」をクリックします。

文字コードを「ANSI」に変更して「保存」をクリックします。

「上書きしますか?」と聞かれるので「はい」をクリックします。

batファイルを実行すれば日本語文字化けが解消しています。

モバイルバージョンを終了