強火で進め このページをアンテナに追加 RSSフィード

整理された情報は こちら へどうぞ。

2009年02月03日

[][]カレントディレクトリをバッチファイルのディレクトリにする

%0 にバッチファイル自身のファイルパスが格納されているため以下の様に記述し、ドライブの変更、ディレクトリの変更を行う。

%~d0
cd %~d0%~p0

追記:

id:nanmo さんよりコメント欄にてもっと短い方法を教えて貰いました。

cd /d %~dp0

cd で /d のオプションを指定すると通常、ディレクトリの変更だけでドライブの変更は行ってくれない cd コマンドでドライブの変更も同時に行うようになります。

たとえば現在、Dドライブの d:\test にいて Cドライブの c:\test2 に移動したい様なドライブが異なる場所への移動も以下の1行を実行するだけでOKです。

cd /d c:\test2

ちなみにコマンドのヘルプはコマンドプロンプト上で「help (コマンド)」とタイプすると確認できます。cd について知りたい場合は help cd で確認できます。

%~dp0 は %~d0 (ドライブ名)と %~p0 (パス名)を組み合わせた記述方法の様です。

dpだけでなく %~ と 0 の間に色々な組み合わせを指定可能な様です。

「ドライブ名、パス名、ファイル名」の組み合わせで取得したい場合は以下のようになります。

echo %~dpn0

これを並び順を変えて「ドライブ名」を最後に移動したとしてもちゃんと「ドライブ名」は先頭に使われ、「ドライブ名、パス名、ファイル名」の順番で取得される様です。

echo %~pnd0

参考サイト:

コマンドプロンプトを使ってみよう! −バッチファイル−

http://ykr414.com/dos/dos05.html

nanmonanmo 2009/02/03 21:14 はじめまして、自分はバッチのディレクトリに移動する時には
cd /d %~dp0
と書いています。
%~dp0 は %~d0%~p0 に相当するパラメータで、/dはドライブを移動するときに必要になる場合があるのでつけています。

nakamura001nakamura001 2009/02/04 00:24 はじめまして、確かに以前どこかで/dでドライブ変更できるって
記事を見かけてこれは良いと思ってはいたんですけど最近全然バッチを
使って無いんですっかり忘れてましたw
%~dp0 は全然知りませんせんでした。これ便利ですね。情報ありがとうございました。

mswarmswar 2009/02/04 19:02 最近はDOSバッチでやってた処理はWSH使ったりしてやってます。バッチだと他の人が触れなかったり、自分でもこんがらかること然りだったんで。
あと、エクセルにアクセスできたりして便利です。(もちろん、そっから読んだ値を使ってバッチ処理できるし)
http://wsh.style-mods.net/index.htm

nakamura001nakamura001 2009/02/04 22:45 おおっ、そういえばWSHって手もありますね。昔は対応してないOSの心配が
ありましたけど今なら大丈夫そうですね。まだ、さっぱり触ってないん
ですけどPowerShellなんかも結構気になってます。

まぁ、今回は用途が単純だったのでバッチで対応しました。またちょっと
複雑なことをするときにWSHで組んでみます(最近、全然使ってないけど
覚えてるかな?そのときは教えてもらったURL参考にさせて貰いますw)

nanasinanasi 2013/02/18 00:09 このコマンドはBat To Exe Converterで変換されたexeでは正常に機能しないようです
なにか解決策はありますか?

nakamura001nakamura001 2013/02/20 04:08 Bat To Exe Converterの場合にはテンポラリディレクトリにbatファイルがコピーされ、そこでで実行されるみたいですね。その為、そのテンポラリディレクトリをカレントディレクトリに切り替えてしまいます。

テンポラリディレクトリでは無く、exeファイルが置いてあるディレクトリに切り替えたという要望であればここで紹介している方法は使えません。

c:\test など、exeファイルを置く予定のディレクトリを固定してbatファイルを作成するのが解決策になると思います。

nanasinanasi 2013/02/23 21:30 返信遅れました
回答ありがとうございました

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト

コメントを書くには、なぞなぞ認証に回答する必要があります。

リンク元