- ベストアンサー
バッチファイル 二つ上のディレクトリのパス取得
"C:\test\sample\a.bat"を実行した時 %~dp0 で C:\test\sample\ と展開できるのですが、 この時 C:\test\ というパスを取得するにはどうすればいいでしょうか? バッチファイルから二つ上のディレクトリのパスを取得する方法を教えていただきたいです。 よろしくお願いします。
- みんなの回答 (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%
その他の回答 (2)
- root8110
- ベストアンサー率30% (6/20)
%~dp0\.. cd でカレントディレクトリを変更してなければ ..\.. でも同じです。
お礼
ご回答ありがとうございます。 アクセスには使えましたがsample\..がついてしまい、目的には使えませんでした。 もう少し勉強してまいります。
- Cupper-2
- ベストアンサー率29% (1342/4565)
ディレクトリコマンドのヘルプを使いましょう。 dir /? でオプションの一覧と使い方が表示されます。 そこに記述があったと思うんですけど 一つ上のパスはピリオドを2つ付けると表示されます。 dir .. 二つ上なら dir ../.. こんな感じ。 あとはdirの出力先を標準出力(コンソール)からテキストファイル(パイプやリダイレクトなどの中間ファイルを含む)にしてフィルタコマンドを使うなどして取得しましょう。
お礼
ご回答ありがとうございます。 後から回答してくださった方の方法で解決しましたが、パス取得方法の1つとして知識が増えました。
お礼
ご回答ありがとうございます。 おかげで全て解決しました! ifでパスの一致の確認ができそうです。 forの使い方も勉強不足でした・・・