新しく質問する

コマンドプロンプトで相対パスの取得

役に立った:1件
  • 質問者:usio199643
  • 投稿日時:2008/10/09 11:07
  • 困り度:すぐに回答が欲しいです
  • 友達に紹介
  • ブログに書く
  • 教えて!gooお気に入り

コマンドプロンプトにて、絶対パスから相対パスを取得する方法はございますでしょうか?

hoge
 ├ hoge2.txt
 └ hoge3.txt

という階層で、

for %%A in (hoge\*.txt) do (
echo %%A
)

と for で回すと、%%Aには絶対パスが入ります。
この%%Aに相対パス(hoge\hoge2.txt)を格納する方法、もしくは%%Aから相対パスを抜き出す方法が知りたいのです。
VBなど別プログラムを起動させずに、あくまでもコマンドプロンプト上での方法がありましたら、どうかご教授下さいませ。

この質問への回答は締め切られました。
このQ&Aは役に立ちましたか?(役に立った:1件)

回答(3件)

  • 参考になった:0件
  • 回答者:rub_oil
  • 回答日時:2008/10/09 13:51

当方、環境はXpSP3です。
カレントをC:\に移動し、コマンドライン上より実行しました。

C:\>for %a in (wrk\*.csv) do echo %a
コマンドの細部が違う事などは了解してくださいね。
で、結果が

wrk\data3.csv

で、XpSP3でも相対パスしか入りませんでした。

通報する

この回答へのお礼

No.1の方へのお礼にも書きましたが、/r パラメータを付けていたのが、絶対パスとなった原因でした。
同じ環境での実証を誠にありがとうございます。
皆さんが挙って相対パスと指摘下さったお陰で、こちらのミスに気付けました。
ご回答、ありがとうございました。

  • 参考になった:0件
  • 回答者:Tacosan
  • 回答日時:2008/10/09 13:02

たぶんスクリプトだと思うので作って実行してみましたが, 手元の Vista Business でテストする限りでは相対パスになってますねぇ.
cドライブではテストできなかったので dドライブでやってますが,
d:\>dir /s hoge2.txt

d:\Test1\Test2\hoge\hoge2.txt
だけが出る状況で d:\ に
cd Test1\Test2
for %%A in (hoge\*.txt) do (echo %%A)
という内容のスクリプトを作って実行しましたが,
hoge\hoge2.txt
しか表示されませんでした.

通報する

この回答へのお礼

N0.1の方へのお礼にも書きましたが、/r パラメータを付けていたのが、絶対パスとなった原因でした。
詳しい検証を誠にありがとうございます。
お陰様でミスの原因に気付けました。
ご回答、ありがとうございました。

  • 参考になった:0件
  • 回答者:Tacosan
  • 回答日時:2008/10/09 11:41

あれ? それで絶対パスが入りますか?
手元の Vista では相対パスになっているんですけど....

通報する

この回答への補足

私の環境はXPです。
VistaとXPの違いでしょうか・・・
例えば、
 C:\Test1\Test2\hoge\hoge2.txt
という階層で、
 cd C:\Test1\Test2
 for %%A in (hoge\*.txt) do ( echo %%A )
と走らせると、
 C:\Test1\Test2\hoge\hoge2.txt
と表示されます。Vistaでは
 hoge\hoge2.txt
となるのでしょうか?

この回答へのお礼

for のパラメータに /r を付けていたのが原因でした。
/r で探索すると絶対パスになってしまうのですね。
パラメータを外せば、ちゃんと相対パスになりました。
OSの違いは関係ありませんでしたね。大変失礼致しました。
ご回答頂き、ありがとうございます。

  
このQ&Aは役に立ちましたか?(役に立った:1件)

このページのトップへ