アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

hoge
 ├ hoge2.txt
 └ hoge3.txt

という階層で、

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

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

A 回答 (3件)

当方、環境はXpSP3です。


カレントをC:\に移動し、コマンドライン上より実行しました。

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

wrk\data3.csv

で、XpSP3でも相対パスしか入りませんでした。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/10/09 14:34

たぶんスクリプトだと思うので作って実行してみましたが, 手元の 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
しか表示されませんでした.
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/10/09 14:31

あれ? それで絶対パスが入りますか?


手元の 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
となるのでしょうか?

補足日時:2008/10/09 11:52
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/10/09 14:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A