DOSのバッチファイルでカレントフォルダを取得するには?

解決済みの質問

DOSのバッチファイルでカレントフォルダを取得するには?

DOSのバッチファイルでカレントフォルダを取得するには?
現在バッチファイルにファイルをドラッグ&ドロップするとそのファイルを処理するようなバッチを組もうとしています。

おおまかな流れとして
 1.ファイルのバックアップ
 2.test.exeの引数にファイルのパスを渡す

といった事をしたいのですが、バッチファイルにドラッグ&ドロップするとカレントフォルダがC:\Documents and Settings\user\になってしまいます。
バッチファイルのある場所をカレントフォルダとするにはどうすればよいのでしょうか。

以下カレントフォルダを確認した結果です。
OS:Windows2000
実行バッチのパス:
C:\Documents and Settings\user\デスクトップ\test.bat

---test.bat----
@echo off
cd
pause

test.bat直接起動
C:\Documents and Settings\user\デスクトップ
test.batにファイルをD&D
C:\Documents and Settings\user

伝わりづらくて申し訳ございません。
宜しくお願い致します。

投稿日時 - 2005-05-31 23:25:30

QNo.1421822

暇なときに回答ください

質問者が選んだベストアンサー

Windows2000なら、
cd /d %0\..
としてみてください。

投稿日時 - 2005-05-31 23:54:37

お礼

ご教授いただいた方法でうまく出来ました。
ファイルでもフォルダみたいな扱いができるんですね。
ありがとうございました。

投稿日時 - 2005-06-01 00:49:52

ANo.1

0 人が「このQ&Aが役に立った」と投票しています

回答(2

D&Dしたファイルのファイル名(フルパス名)は、バッチファイル内では、バッチファイルに渡されるパラメータとして、%1に格納されています。

また、バッチファイル自身のフルパス名は、%0に格納されています。

で、%0から、パス名やファイル名だけを取り出すには、パラメータ修飾子を使用します。(下記の括弧内は、ファイル名が"C:\Documents and Settings\user\デスクトップ\test.bat"の時の例)

%0  :パラメータ全体("C:\Documents and Settings\user\デスクトップ\test.bat"⇒パス名にスペースが含まれているので、引用符(")が付く)
%~d0 :%0からドライブ名だけを取り出す。(C:)
%~p0 :%0からパス名だけを取り出す。(\Documents and Settings\user\デスクトップ\⇒両端に"\"が付く)
%~n0 :%0からファイル名だけを取り出す。(test)
%~x0 :%0からファイル拡張子だけを取り出す。(.bat)
%~s0 :%0をMS-DOSの8.3形式の短いファイル名を取り出す。(C:\DOCUME~1\USER\デスク~1\TEST.BAT)
(複数の修飾子を組み合わせることも可能)

なので、"test.bat"のパス名は、"%~dp0"で取り出せます。

cd %~dp0  (または、cd "%~dp0"←パス名にスペースが含まれる時)

『コマンドプロンプトを使ってみよう:バッチパラメータ・修飾子』
http://ykr414.com/dos/bat.html#05

参考URL:http://ykr414.com/dos/bat.html#05

投稿日時 - 2005-06-01 00:24:14

お礼

バッチパラメータがここまで詳細に指定できるとは驚きました。
とても参考になりました。
ありがとうございます。

尚、回答いただいた方の回答はどの回答もとても参考になったので回答をいただいた順にポイントを割り振らせていただきたいと思います。
貴重な回答をありがとうございました。

投稿日時 - 2005-06-01 01:05:26

ANo.2

バッチファイル中でecho %1 を実行してみればドラッグ&ドロップしたファイルのパスは正しく表示されますね。
一方、バッチファイルをエクスプローラから起動したときのカレントディレクトリは、環境変数の HOMEPATHが使われると思います(echo %HOMEPATH% で確認可能)。これをドラッグしたファイルのパスごとに切り替えるのは難しい気がしますが。
たとえば、"C:\Documents and Settings\user\temp\file.txt" がドラッグされたファイルだとして、.....temp\までを切り出せればいいのでしょうが、コマンドでそこまでできるのかは私にはわかりません。
Wscript/Cscriptを使ってみるのはどうでしょう。
これは一種の言語ですので新たに学ばねばなりませんが。

投稿日時 - 2005-06-01 00:11:58

お礼

よく分からない場所がカレントフォルダになってしまうと思っていたのは環境変数のHOMEPATHだったんですね。
貴重な情報ありがとうございました。
また、.....temp\までの切り出しについてですが、deadlineさんの回答を参考に%~dp1で取得できました。

投稿日時 - 2005-06-01 00:57:54

新着

パソコントラブルQ&A特集

起動しない!ネットがつながらない!!

保険のギモンはここで解決!

プロのFPが無料でお答えします!

お部屋探しはCHINTAI

マチから探せる新しいお部屋探し!

注目ピックアップ

スタッフブログ

知って得する!お得な情報を OKWaveスタッフがお届けします

OKちゃんねる

OKWaveからみんなに質問!
あなたの意見を教えてください

10QUESTIONS

有名人へOKWaveから10の質問!
アノ人のおことがもっと知れちゃうかも

一覧 ]

おすすめリンク