%~dp0 と %CD%
1. %~dp0 とは
-
バッチファイル自身が存在する フォルダのパス を返す特殊変数です。
-
ショートカット経由で実行しても、必ずバッチの場所が基準になります。
例題
バッチファイル backup.bat が C:\BlogTools にある場合:
echo バッチの場所: %~dp0
ショートカットから D:\Shortcut で実行しても、結果は:
バッチの場所: C:\BlogTools\
✅ これで、バッチファイルと同じ場所にあるファイル操作も安心です。
2. %CD% とは
-
現在の作業ディレクトリ を返します。
-
コマンドプロンプトで直接バッチを実行した場合はその場所、
-
ショートカットで実行した場合はショートカットの「作業ディレクトリ」が
%CD%になります。
例題
同じく backup.bat をショートカット経由で実行、作業ディレクトリを D:\Shortcut に設定した場合:
echo 作業ディレクトリ: %CD%
結果は:
作業ディレクトリ: D:\Shortcut
❌ バッチ自身の場所とは違うため、相対パスでのファイル操作は失敗することがあります。
3. 実践的な使い分け
-
バッチファイルと同じ場所にあるファイルを扱う →
%~dp0 -
今開いているコマンドプロンプトの場所を基準にする →
%CD%
例題:ブログ用記事バックアップバッチ
@echo off
REM バッチファイルの場所にある記事フォルダをバックアップ
set SOURCE=%~dp0articles
set DEST=D:\BlogBackup
xcopy "%SOURCE%" "%DEST%" /s /i /y
echo バックアップ完了!
pause
✅ この場合、ショートカット経由でも %~dp0 で正しい記事フォルダにアクセスできます♪
1. %0
-
これは バッチファイル自身の名前 を指します。
-
例えば、
backup.batを実行した場合、%0は"backup.bat"です。
2. ~
-
%0の前に付けると 修飾子 として働きます。 -
~を付けることで フルパスやドライブ、拡張子など特定の部分だけを取得 できます。
3. d
-
~dのdは ドライブ名だけ を取得する修飾子です。 -
例:
C:\BlogTools\backup.bat→C:
4. p
-
~pのpは パスだけ を取得する修飾子です。 -
例:
C:\BlogTools\backup.bat→\BlogTools\
5. 0
-
修飾子が付く対象を指定する番号です。
-
0は 現在実行中のバッチファイル自身 を指します。
まとめ
-
%0→ バッチ自身の名前 -
~→ 修飾子指定の合図 -
d→ ドライブのみ -
p→ パスのみ -
0→ 対象はバッチ自身
💡 結果として %~dp0 は 「バッチファイルがあるドライブ+フォルダパス」 を返します。
例:C:\BlogTools\backup.bat → C:\BlogTools\
コメント
コメントを投稿