過去の桐井戸端BBS (桐談義・その他)
13379 Windows2000で桐のプログラムを走らせると相対パスがうまくいかない iny 2001/10/05-11:56
お疲れ様です。

今回、今までWINDOWS95、98、MEで作成していた桐のプログラムを
WINDOWS2000で走らせようとすると、相対パスが
上手く動きません。

具体的には "...\common\〜"と、.を3つ以上つけるとファイル名エラーとなり、
"..¥common\〜"と2つまでなら、ファイル名を正確に認識します。


WINDOWS2000では、相対パスの見方が何か違うのでしょうか?
宜しくお願いします。
13386 Re:windows2000の相対パスについて ばしけん 2001/10/05-20:46
記事番号13379へのコメント
inyさん、こんばんわ。

>今回、今までWINDOWS95、98、MEで作成していた桐のプログラムを
>WINDOWS2000で走らせようとすると、相対パスが
>上手く動きません。
>
>具体的には "...\common\〜"と、.を3つ以上つけるとファイル名エラー
>となり、"..¥common\〜"と2つまでなら、ファイル名を
>正確に認識します。
>
>
>WINDOWS2000では、相対パスの見方が何か違うのでしょうか?

親ディレクトリへの相対パスは「..」が正しく、3つ以上は明らかに誤りです。
今まで作成していたプログラムが"...\common\〜"で動いていたこと自体が
おかしいですので、"..¥common\〜"と2つに修正することをお奨めします。


以下は蛇足です。
因みに、コマンドプロンプト/DOSプロンプトで確認したところ、

"cd ..." → Win98:エラー、Win2000:無視
"type ...\test.txt" → Win98:エラー、Win2000:エラー
(親ディレクトリにファイルは実在します)
"cd ...\subdir" → Win98:エラー、Win2000:ディレクトリ移動!
(subdirは実在します)
となりました。Win2000の挙動にはちょっとびっくり(^^;;

あと、ファイルオープン時のダイアログでファイル名のところに
"...\test.txt"
と入力するとやはりエラーになりました。
13389 Re:windows2000の相対パスについて hidetake 2001/10/05-21:15
記事番号13386へのコメント
>親ディレクトリへの相対パスは「..」が正しく、3つ以上は明らかに誤りです。

これは Windows9x にある \windows\tips.txt に
記載されている内容であり誤りでは無いのです・

>[ディレクトリの移動]
>ディレクトリの移動には、次のような便利な方法が使用できます。
>. = 現在のディレクトリ
>.. = 親ディレクトリ
>... = 2 つ上のディレクトリ (Windows 95 の新機能)
>.... = 3 つ上のディレクトリ (Windows 95 の新機能)
>たとえば、C:\Windows\System\Viewers ディレクトリにいるときに、"cd...." と
>入力すると、C:\ に移動できます。

ただ、DOS時代からの慣習とも異なりますし、
Windows9x では使えるけど他では使えないだけです。

ちなみに? DOS 5.x 時代から使えた truename と言う
内部コマンドも NT(2000) 系では使えません。
これは公開コマンドでは無いのですけど・・・ (^^;

13407 Re:windows2000の相対パスについて ばしけん 2001/10/09-19:41
記事番号13389へのコメント
hidetakeさんは No.13389「Re:windows2000の相対パスについて」で書きました。
>>親ディレクトリへの相対パスは「..」が正しく、3つ以上は明らかに誤りです。
>これは Windows9x にある \windows\tips.txt に
>記載されている内容であり誤りでは無いのです・
>
>>[ディレクトリの移動]
>>ディレクトリの移動には、次のような便利な方法が使用できます。
>>. = 現在のディレクトリ
>>.. = 親ディレクトリ
>>... = 2 つ上のディレクトリ (Windows 95 の新機能)
>>.... = 3 つ上のディレクトリ (Windows 95 の新機能)
>>たとえば、C:\Windows\System\Viewers ディレクトリにいるときに、"cd...." と
>>入力すると、C:\ に移動できます。

げげっ。知りませんでした。どうもすみません。"C:\WINDOWS"で実験したのが間違いでした。
そんなファイル(\windows\tips.txt)があったとは...(汗)

さらに誤りがあったので、補足します。
Windows2000で"cd ...\subdir"が通るのは、ルートディレクトリの直接のサブディレクトリにいる場合だけでした。
"C:\Program Files"で、"cd ...\WINNT"を実行するとディレクトリ移動しますが、
それより深いところからはダメでした。
「2つ上の」という意味にもなりません。
(だから、どうだということもないですが)

>ただ、DOS時代からの慣習とも異なりますし、
>Windows9x では使えるけど他では使えないだけ
>です。
>
>ちなみに? DOS 5.x 時代から使えた truename と
>言う内部コマンドも NT(2000) 系では使えません。
>これは公開コマンドでは無いのですけど・・・ (^^;

ついでに? truenameコマンドって何するコマンドですか?

13408 Re:windows2000の相対パスについて hidetake 2001/10/09-20:58
記事番号13407へのコメント
>ついでに? truenameコマンドって何するコマンドですか?

Try!

C:\>truename c:\windows\.\..\winodws\system\vmm32\.\..\..\


13425 Re:truename?_? pokopon 2001/10/10-19:11
記事番号13407へのコメント
ばしけんさん こんにちは

>ついでに? truenameコマンドって何するコマンドですか?
>Try!
>C:\>truename c:\windows\.\..\winodws\system\vmm32\.\..\..\

トライしてみましたか? な〜んにも表示されないですね(実は表示されています)。

これこそ Try!!

C:\>truename c:\windows\.\..\winodws\system\vmm32\.\..\..\
C:\>truename c:\windows\.\..\winodws\system\vmm32\.\..\
C:\>truename c:\windows\.\..\winodws\system\vmm32\.\

と、..¥をセットで消して実行してみましょう。
続けて実行すれば、結果は・・・・おのずとわかりましたね。

hidetakeさんは意地悪ですね〜〜。 m(__)m  という私も (^^ゞ

参考:
http://www25.cds.ne.jp/~kamiken/bach/b_comand.html
でした。


13497 Re:truename?_? ばしけん 2001/10/15-19:26
記事番号13425へのコメント
hidetakeさん、pokoponさん、こんばんは。


>Try!

C:\>truename c:\windows\.\..\winodws\system\vmm32\.\..\..\

C:\WINDOWS\

C:\>truename c:\windows\.\..\winodws\system\vmm32\.\...

C:\WINDOWS

なるほど、納得。ありがとうございました。
最後の"\"をつける/つけないも結果に反映されています。(^o^)

C:\WINDOWS>truename ..\windows\system32\.\..\..

というのもやってみました。機械的に作成した相対パス→絶対パスに使えますね。
でも、隠しコマンドなんですね。NT系はダメだし。

>参考:
>http://www25.cds.ne.jp/~kamiken/bach/b_comand.html
>でした。

ありがとうございます。復習します。
"truename"はshort nameを返すそうですので、"PROGRA~1"になるってことですね。
DOSコマンドも、95/98系とNT/2000系でそれぞれ独自拡張があって、
不便に感じることもありますね。

戻る