• ベストアンサー
  • 暇なときにでも

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

  • 質問No.1421822
  • 閲覧数107485
  • ありがとう数94
  • 気になる数1
  • 回答数3
  • コメント数3

お礼率 100% (10/10)

現在バッチファイルにファイルをドラッグ&ドロップするとそのファイルを処理するようなバッチを組もうとしています。

おおまかな流れとして
 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

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

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

  • 回答No.1
  • ベストアンサー

ベストアンサー率 41% (160/385)

Windows2000なら、
cd /d %0\..
としてみてください。
お礼コメント
ak9457

お礼率 100% (10/10)

ご教授いただいた方法でうまく出来ました。
ファイルでもフォルダみたいな扱いができるんですね。
ありがとうございました。
投稿日時:2005/06/01 00:49

その他の回答 (全2件)

  • 回答No.3

ベストアンサー率 63% (1239/1943)

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
お礼コメント
ak9457

お礼率 100% (10/10)

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

尚、回答いただいた方の回答はどの回答もとても参考になったので回答をいただいた順にポイントを割り振らせていただきたいと思います。
貴重な回答をありがとうございました。
投稿日時:2005/06/01 01:05
  • 回答No.2

ベストアンサー率 21% (13/61)

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

お礼率 100% (10/10)

よく分からない場所がカレントフォルダになってしまうと思っていたのは環境変数のHOMEPATHだったんですね。
貴重な情報ありがとうございました。
また、.....temp\までの切り出しについてですが、deadlineさんの回答を参考に%~dp1で取得できました。
投稿日時:2005/06/01 00:57
結果を報告する
    • 2015/08/21 12:40
    • コメントNo.3

    バッチ処理もWindowsXPまでは便利に多用してました。懐かしいです。 Windows7になってから気軽にできなくなって疎遠になってます。 またやりかたを調べてみようかなあ。

    • 2015/08/18 16:58
    • コメントNo.2

    そろそろプログラムとかの知識もほしいなあ、と思いながら数年が経ちました

    • 2015/08/13 16:15
    • コメントNo.1

    バッチファイルとか自分で作ってみたいですが、なかなか知識がなくて難しいです。ファイルもフォルダの扱いができる、というのは覚えておきます。

AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ