%~dp0%CD%

1. %~dp0 とは

  • バッチファイル自身が存在する フォルダのパス を返す特殊変数です。

  • ショートカット経由で実行しても、必ずバッチの場所が基準になります。

例題
バッチファイル backup.batC:\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

  • ~ddドライブ名だけ を取得する修飾子です。

  • 例:C:\BlogTools\backup.batC:

4. p

  • ~ppパスだけ を取得する修飾子です。

  • 例:C:\BlogTools\backup.bat\BlogTools\

5. 0

  • 修飾子が付く対象を指定する番号です。

  • 0現在実行中のバッチファイル自身 を指します。


まとめ

  • %0 → バッチ自身の名前

  • ~ → 修飾子指定の合図

  • d → ドライブのみ

  • p → パスのみ

  • 0 → 対象はバッチ自身

💡 結果として %~dp0「バッチファイルがあるドライブ+フォルダパス」 を返します。
例:C:\BlogTools\backup.batC:\BlogTools\


Windows パス関連環境変数一覧

コメント

人気の投稿

Bloggerでは“コピー用アイコン”が出せないの?

Googleドライブの共有で浮気がバレるかもしれない・・・www

ブックマークレット