"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
    • 1
この回答へのお礼

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

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

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

%~dp0\..



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

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

ご回答ありがとうございます。
アクセスには使えましたが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と関連する良く見られている質問

Qディレクトリ操作

PERLでディレクトリの操作をするときの文法を教えていただけないでしょうか。
ディレクトリオープンは判るのですが・・・、
ディレクトリ作成・ディレクトリの名前変更
ディレクトリの削除・ディレクトリの存在確認
が判りません。どうかご指南お願いいたします。

Aベストアンサー

 -e もしくは -d のあとのフォルダ名は、必ず "" か '' でかこってください。
 そうでないと正しく動作しません。

Qバッチファイルで複数のディレクトリのexe実行

http://oshiete1.goo.ne.jp/qa4729613.html
こちらでも似たような質問をして教えて頂きましたが、もう一つ教えてください。

D:
├─folderA
| └─A.exe
├─folderB
| └─A.exe
└─folderC
  └─A.exe

カレントはD直下です。
D直下からfolderA、folderB、folderCの名前を指定せずに、
D直下にあるすべてのフォルダの中のA.exeをバッチでそれぞれ実行したいのです。

startでやればいいのかと思いましたが、これでは/sが使えずに削除と同じようにはできませんでした。

よろしくお願いします。

Aベストアンサー

No.1 は D:\ を起点に,奥深いサブフォルダまで再帰的に降りていきましたが,
この回答は D:\ 直下のフォルダだけです。folderA の下のさらなるサブフォルダには降りていきません。
----------------------------------------
@echo off
for /d %%i in (*) do start %%i\a.exe
----------------------------------------
forコマンドのオプションについては,Windowsのヘルプで調べてください。

Q特定のディレクトリから特定のディレクトリへファイルを移動するバッチ処理

特定のディレクトリから特定のディレクトリへファイルを移動するバッチ処理

WindowsOSにおいて、たとえば、ディレクトリA、ディレクトリBがあり、
ディレクトリAの中に入っているファイルやディレクトリをすべて、
ディレクトリBに移動する、というようなバッチ処理があれば
その書き方を教えてください。

意味不明でしたら加筆しますのでよろしくお願いします。

Aベストアンサー

こんにちは。

 コマンドプロンプトのXCOPYではダメでしょうか。

では。

Qcocoa で ユーザーディレクトリの Application Support ディレクトリ までのパス取得

cocoa で ユーザーディレクトリの Application Support ディレクトリ までのパス取得を簡単に行うにはどうすれば良いでしょうか?
[[NSBundle mainBundle]bundlePath]
で取得したパスを加工する方法しか思いつきません。
他にあれば教えていただけますか?

よろしくおねがいします

Aベストアンサー

NSSearchPathForDirectoriesInDomains( NSApplicationSupportDirectory, NSUserDomainMask, YES );
http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Functions/Reference/reference.html#//apple_ref/c/func/NSSearchPathForDirectoriesInDomains

普通にホームディレクトリを取得して、Library/Application Supportを決め打ちでくっ付けるだけでも良いような気もしないでもないですが。

Q仮想ディレクトリと通常ディレクトリの違い。

お願いします。教えてください。

<質問内容>
仮想ディレクトリと通常ディレクトリの違いは?

1.仮想ディレクトリは他のディレクトリとリンク?が出来る。
2.通常はただのフォルダ。

その他に仮想ディレクトリの利点ってあるのでしょうか?
いまいち仮想ディレクトリの利用方法が明確になっていないので・・・

Aベストアンサー

IISの設定のことですよね。
仮想ディレクトリは、物理的な配置を見えなくする効果もあります。
ホームディレクトリを
C:\wwwrootと指定したときは
http://www.sample.ne.jp/ とURLを書いたときに表示されるファイルがそのコンピュータのC:\wwwrootフォルダの中にあると解釈されますよね。これも一種の仮想ディレクトリです。

例えばC:\wwwroot\bigfolderフォルダの下がものすごく大きな容量になってしまい、Cドライブに入らなくなったとします。普通このフォルダに入っているファイルにアクセスする場合は
http://www.sample.ne.jp/bigfolder/ でアクセスしていますが、これをそのままにして、コンピュータ上の場所だけ移動したいときに便利になります。
../bigfolder(外からのフルパスで書けばhttp://www.sample.ne.jp/bigfolder/)の指定をD:\bigfolderとしておけば、仮想ディレクトリは外から見たときのアドレスはそのままでも、そのコンピュータの中にあるデータはDドライブへ移ることになり、容量が確保できます。

仮想ディレクトリによってサーバーそのものも変えることができるの(下の方が書いてますが、共有名を使用できる)で、その点からすると負荷分散にもなります。


こんなものでどうでしょうか?

IISの設定のことですよね。
仮想ディレクトリは、物理的な配置を見えなくする効果もあります。
ホームディレクトリを
C:\wwwrootと指定したときは
http://www.sample.ne.jp/ とURLを書いたときに表示されるファイルがそのコンピュータのC:\wwwrootフォルダの中にあると解釈されますよね。これも一種の仮想ディレクトリです。

例えばC:\wwwroot\bigfolderフォルダの下がものすごく大きな容量になってしまい、Cドライブに入らなくなったとします。普通このフォルダに入っているファイルにアクセスする場合は
...続きを読む

QDosバッチでファイルパスからフォルダパス取得

Dosバッチで引数指定されるファイルパスからフォルダパス部分を抜き出したいと思っています。

例)----------------------------------------------
「C:¥hoge1¥hoge2¥a.txt」が引数で指定されてきた場合、
「C:¥hoge1¥hoge2¥」の部分を変数に格納したい
-----------------------------------------------

ちなみに、指定されてくるパスは不規則です。

どなたか良い方法をご存知でしたらご教授宜しくお願い致します。

Aベストアンサー

わざわざ 2回参照するまでもなく
%~dp1
でよかったりします>#2.

Qcpコマンドで、属性維持したままディレクトリ毎、同じ階層にコピーしたい

originディレクトリ内容を、copyディレクトリへ、属性維持したままディレクトリ階層毎コピーしたいです。

・aオプションを付与すると、階層がズレます。
・copyディレクトリの中にoriginディレクトリが作成されてしまいます。

・originディレクトリ内容を、そのままcopyディレクトリ内容へコピーするにはどうすれば良いでしょうか?

Aベストアンサー

cp -rp

Q子バッチの変数を親バッチで取得したい

行き詰まりましてぜひともみなさんの知恵をお借りしたいです。
現在a.bat(親)と b.bat(子)があります。a.bat で call b.bat して
b.batである処理の結果(文字列)を変数Palaにセットしました。
ここでこのb.batのなかの変数Palaの値をa.bat(親)で取得したいですが
なにかいい方法がありますか?TEMPファイルへ書き込んでからa.bat(親)終了時に削除する方法以外でおねがいします。
以下はバッチファイルの一部分です。
a.bat(親)
----------------
call b.bat
---------------
b.bat(子)
***************
FOR /F "tokens=1" ・・・・・・・ "%1" temp.txt') do set Pala=%%l
(%Pala%はいつも値は存在する。
この%Pala%をa.batで使いたいですが取得方法がわかりません)
***************

Aベストアンサー

b.bat内でsetlocalしていない限り、a.bat内でも普通に %Pala% で参照できます。

Qディレクトリ削除

rmdirでディレクトリを削除しようとしているのですが、
ディレクトリの中にファイルやディレクトリがある為削除できません。
ディレクトリの中には何階層もディレクトリがあり(いくつあるかわからない)ます。
この場合ディレクトリ以下全て消したいのですがどうやって実装すればいいでしょうか?
ご存知の方ご教授お願いいたします。

Aベストアンサー

まぁ普通に考えれば、再帰呼び出しで一番TREEの下からファイルを削除するってことになりますよねー。
要するに、ディレクトリの階層一覧を所得して、それがディレクトリだったらまた階層一覧を。。。。ってことです。

Qバッチファイルで実行ファイル同時実行

こんにちは、
ある複数の実行ファイルを同時に起動させたく思い、
バッチファイルに実行ファイルを羅列したのですが、
調べたところNT系だと終了を待つ様です。
終了を待たずに次のコマンドに進み、実行後コマンドプロンプトを
閉じるまでを行う事は不可能なのでしょうか?

よろしくお願いいたします。

Aベストアンサー

@echo off
start calc.exe
dir

みたいな感じ?(電卓の終了を待たずに、ディレクトリをリスト)
質問の意図がイマイチわからん。


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

人気Q&Aランキング