強火で進め

このブログではプログラム関連の記事を中心に書いてます。

カレントディレクトリをバッチファイルのディレクトリにする

%0 にバッチファイル自身のファイルパスが格納されているため以下の様に記述し、ドライブの変更、ディレクトリの変更を行う。

%~d0
cd %~d0%~p0

追記:
id:nanmo さんよりコメント欄にてもっと短い方法を教えて貰いました。

cd /d %~dp0

cd で /d のオプションを指定すると通常、ディレクトリの変更だけでドライブの変更は行ってくれない cd コマンドでドライブの変更も同時に行うようになります。

たとえば現在、Dドライブの d:\test にいて Cドライブの c:\test2 に移動したい様なドライブが異なる場所への移動も以下の1行を実行するだけでOKです。

cd /d c:\test2

ちなみにコマンドのヘルプはコマンドプロンプト上で「help (コマンド)」とタイプすると確認できます。cd について知りたい場合は help cd で確認できます。

%~dp0 は %~d0 (ドライブ名)と %~p0 (パス名)を組み合わせた記述方法の様です。
dpだけでなく %~ と 0 の間に色々な組み合わせを指定可能な様です。

「ドライブ名、パス名、ファイル名」の組み合わせで取得したい場合は以下のようになります。

echo %~dpn0

これを並び順を変えて「ドライブ名」を最後に移動したとしてもちゃんと「ドライブ名」は先頭に使われ、「ドライブ名、パス名、ファイル名」の順番で取得される様です。

echo %~pnd0

参考サイト:

コマンドプロンプトを使ってみよう! −バッチファイル−
http://ykr414.com/dos/dos05.html