プロが教えるわが家の防犯対策術!

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

A 回答 (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%
    • good
    • 12
この回答へのお礼

ご回答ありがとうございます。
おかげで全て解決しました!

ifでパスの一致の確認ができそうです。
forの使い方も勉強不足でした・・・

お礼日時:2014/11/17 15:36

%~dp0\..



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

参考URL:http://pentan.info/server/windows/cmd/dp0.html
    • good
    • 1
この回答へのお礼

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

お礼日時:2014/11/17 15:42

ディレクトリコマンドのヘルプを使いましょう。


dir /?
でオプションの一覧と使い方が表示されます。

そこに記述があったと思うんですけど
一つ上のパスはピリオドを2つ付けると表示されます。
dir ..
二つ上なら
dir ../..
こんな感じ。

あとはdirの出力先を標準出力(コンソール)からテキストファイル(パイプやリダイレクトなどの中間ファイルを含む)にしてフィルタコマンドを使うなどして取得しましょう。
    • good
    • 1
この回答へのお礼

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

お礼日時:2014/11/17 15:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A