• ベストアンサー

バッチファイル 二つ上のディレクトリのパス取得

"C:\test\sample\a.bat"を実行した時 %~dp0 で C:\test\sample\ と展開できるのですが、 この時 C:\test\ というパスを取得するにはどうすればいいでしょうか? バッチファイルから二つ上のディレクトリのパスを取得する方法を教えていただきたいです。 よろしくお願いします。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

C:\test\ という名前が欲しいのであれば、 set A=%~dp0 set A=%A:~0,-2% for %%A in (%A%) do set A=%%~dpA echo %A% アクセスするだけであれば、他の方のように .. で。 そういう意味では、下記でも良いですね。この場合は、C:\test\ でなく、C:\test が得られます。 pushd %~dp0.. set A=%CD% popd echo %A%

rusieru0714
質問者

お礼

ご回答ありがとうございます。 おかげで全て解決しました! ifでパスの一致の確認ができそうです。 forの使い方も勉強不足でした・・・

その他の回答 (2)

  • root8110
  • ベストアンサー率30% (6/20)
回答No.2

%~dp0\.. cd でカレントディレクトリを変更してなければ ..\.. でも同じです。

参考URL:
http://pentan.info/server/windows/cmd/dp0.html
rusieru0714
質問者

お礼

ご回答ありがとうございます。 アクセスには使えましたがsample\..がついてしまい、目的には使えませんでした。 もう少し勉強してまいります。

  • Cupper-2
  • ベストアンサー率29% (1342/4565)
回答No.1

ディレクトリコマンドのヘルプを使いましょう。 dir /? でオプションの一覧と使い方が表示されます。 そこに記述があったと思うんですけど 一つ上のパスはピリオドを2つ付けると表示されます。 dir .. 二つ上なら dir ../.. こんな感じ。 あとはdirの出力先を標準出力(コンソール)からテキストファイル(パイプやリダイレクトなどの中間ファイルを含む)にしてフィルタコマンドを使うなどして取得しましょう。

rusieru0714
質問者

お礼

ご回答ありがとうございます。 後から回答してくださった方の方法で解決しましたが、パス取得方法の1つとして知識が増えました。

関連するQ&A