batファイルの相対パス

質問・疑問に答えるQ&AサイトOKWave

解決済みの質問

batファイルの相対パス

batファイルの相対パス

あるバッチが相対パスであるファイルを参照しています
このバッチファイルを直接起動すれば、正しく参照できますが、
別のディレクトリにいる別のバッチファイルからcallされた場合、
呼び出し先の相対パスではなく、
呼び出し元の相対パスになってしまいファイルを参照できません。

この問題をスマートに解決する方法はありませんか?

例のchild.batからはfile.txtを参照できますが、
parent_1.bat経由の場合、ファイルが見つかりませんとなります。

child.bat の中で、「cd c:\dir_a」を書いて基点を変更すればとりあえずは行けそうですが、可能な限り絶対パスのベタ書きは避けたいです。

宜しくお願いします。


【例】

c:\
|
+-dir_a
| |
| +-child.bat
| |
| +-file.txt
|
+-dir_b
| |
| +-parent_1.bat
|
+-dir_c
|
+-parent_2.bat


===== file.txt =====
test-test-test
===== file.txt =====

===== child.bat =====
type ./file.txt
pause
===== child.bat =====

===== parent_1.bat =====
call c:\dir_a\child.bat
===== parent_1.bat =====

投稿日時 - 2010-03-09 16:39:42

QNo.5738095

すぐに回答ほしいです

質問者が選んだベストアンサー

Win9xとか古いOSでなければ、
%~dp0でバッチファイルのあるディレクトリが取得できます。

ですので、child.batで
cd /d %~dp0
すれば、バッチファイルの場所がカレントディレクトリになります。

投稿日時 - 2010-03-09 17:12:02

お礼

ありがとうございます。
これでいけそうです。

投稿日時 - 2010-03-10 08:58:07

ANo.2

jgk

3人が「このQ&Aが役に立った」と投票しています

[  前へ  |  次へ ]

ベストアンサー以外の回答(1件中 1~1件目)

pushd/popdコマンドを用いて一時的にカレントディレクトリを保存/復帰するという方法があります。

参考URL:http://www.atmarkit.co.jp/fwin2k/win2ktips/792pushd/pushd.html

投稿日時 - 2010-03-09 16:43:26

お礼

ありがとうございます。
単独では相対パスの問題は解決しませんが、併用する事でより効果的にできそうです。

投稿日時 - 2010-03-10 09:00:43

あわせてチェックしたい
  • コマンド「dir」の結果を、テキストに出力 ...
  • 相対パスの指定 ...
  • two-parent family ...
PR
母の日!ほっこりエピソード2012特集[ 詳細 ]

OKWaveのオススメ

教えて弁護士さん!

お金の悩みQ&A特集はこちら