Home > 聞いて欲しい独り言 > バッチファイル(コマンドプロンプト)でカレントディレクトリのパスを変数に入れる。

バッチファイル(コマンドプロンプト)でカレントディレクトリのパスを変数に入れる。

あんまり無いシチュエーションかもしれませんが、バッチファイルから起動するプログラムの引数にカレントディレクトリの絶対パスを与えてやる必要が生じ、いろいろ試した結果以下のようにできることが判明した。


for /F "delims==" %i in ('cd') do set cdir=%i 

for文の/Fオプションは基本的にはファイルを入力するためのものでそれはそれでいろいろ使えそうなんだけども、コマンド自体も指定可能(シングルクオーテーションで囲む)で、その結果を変数に入れられるようだ。この場合はcdを渡している。cdはディレクトリ移動だが、引数を与えなければカレントパスを返す。pwdみたいに。forなんで繰り返しだけれども、cdの結果は一個しかないので上記でよい感じ。さらにオプションでdelimsを与えているが、デフォルトではコマンドの結果をスペースで分割するっぽく、Windowsだと時々困るのでデリミタを’=’に変更している。


for /F "delims==" %i in ('cd') do set cdir=%i 
hoge.exe "%cdir\fuga.txt"

こんな感じで使えるわけです。forは他にも面白い使い方ができそう。

以上

2008-09-22 追記: (じゃくさんコメントより)
こんなめんどくさいことしなくても%CD%でガツン!ととれるようだ。
http://homepage1.nifty.com/jak/batch/

2008-09-24 追記:
なんでも%%でいけるのかと思ったけど、無理みたいだなあ。例えば日付を取りたいときとかは%date /T%ではだめで、forならいける。


for /F %i in ('date /T') do set d=%i

Comments:5

じゃく 08-09-18 (木) 7:29

カレントディレクトリの取得ですが、for文を使わなくても %CD% で取得できますよ。

じゃく http://homepage1.nifty.com/jak/batch/

コスミー 08-09-19 (金) 23:25

うおう。まじで!?
まじだ。
どうもありがとう。

じゃく 08-10-02 (木) 21:57

またまたおじゃまします。

日付をとりたいときは %DATE% という記述があります。
ここら辺は特殊な環境変数でシステムが動的にセットするものです。
set /? で表示されるヘルプの最後にかかれています。

>なんでも%%でいけるのかと思ったけど、無理みたいだなあ。

UNIX のシェルでいうところの実行結果の置き換えに当たる `date /T`に相当するものは for /F %i in (‘date /T’) do であってますので、for /F 覚えておいて損はないです。

コスミー 08-10-03 (金) 0:05

なるほど~。普通にdateって打ったら対話的なことになるので試してませんでした。
%TIME%ってのもあるんですね。
コマンドの実行結果を入れてくれるのかと思ったのでちょっと誤解しました。

FOWUJFKDCRWUUIX 18-09-10 (月) 9:19

Hello there, just became alert to your blog through Google, and found that it’s truly informative. I gonna watch out for brussels. I will be grateful if you continue this in future. Many people will be benefited from your writing. Cheers!

Comment Form
Remember personal info

Trackbacks:1

Trackback URL for this entry
http://red-treasure.com/report/wp-trackback.php?p=274
Listed below are links to weblogs that reference
バッチファイル(コマンドプロンプト)でカレントディレクトリのパスを変数に入れる。 from コスミー報告書[社外秘]
trackback from 髮題ェ後〒繧「繝。繝ェ繧ォ繝ウ繝輔ャ繝医?繝シ繝ォ nfl elite 繝ヲ繝九ヵ繧ゥ繝シ繝 14-11-19 (水) 8:37

髮題ェ後〒繧「繝。繝ェ繧ォ繝ウ繝輔ャ繝医?繝シ繝ォ nfl elite 繝ヲ繝九ヵ繧ゥ繝シ繝

繧ウ繧ケ繝溘?蝣ア蜻頑嶌[遉セ螟也ァ肋 – 繝舌ャ繝√ヵ繧。繧、繝ォ?医さ繝槭Φ繝峨?繝ュ繝ウ繝励ヨ?峨〒繧ォ繝ャ繝ウ繝医ョ繧」繝ャ繧ッ繝医Μ縺ョ繝代せ繧貞、画焚縺ォ蜈・繧後k縲

Home > 聞いて欲しい独り言 > バッチファイル(コマンドプロンプト)でカレントディレクトリのパスを変数に入れる。

Search
Feeds
Meta
 合計:004582
 今日:0120 昨日:0095

Return to page top