dポイントプレゼントキャンペーン実施中!

本日、初めてjavascriptにチャレンジしました。
カレントフォルダについて、わからないため教えてください。

■D:/data/にtest.html,test.jsを作成
■test.html内にtest.jsを組み込み
■test.jsに下記を記載

var fso = new ActiveXObject("Scripting.FileSystemObject");
var myFolder = fso.GetFolder(".");
var myFiles = new Enumerator(myFolder.Files);

while(!myFiles.atEnd()){
document.write(myFiles.item());
myFiles.moveNext();
}

D:/data/内のファイル一覧を表示させたかったのですが、
結果は、デスクトップのファイル一覧が表示されました。

fso.GetFolder(".")でカレントフォルダを指定していますが、
この定義はどうなっているのでしょうか?

不慣れなため、質問の仕方も簡潔でなくすみません。
宜しくお願いいたします。

A 回答 (3件)

> → htmlファイルはローカル上のファイルで、IE6でファイルオープンしています。

IIS等のHTTPサーバ(?)は動作していません。

よく調べてみると、ブラウザの実行ファイルのパスがカレントになる
ようですね。
(IEの場合はなぜか %ProgramFiles%\Internet Explorer\iexplore.exe
ではなくデスクトップになるようです)

こちらでテストしたのがたまたま偶然、IEではないIEコンポブラウザで
実行ファイルのある場所にテストファイル作っていたため気がつか
なかったようです。
すみません。

これはJScript側の仕様と見るしかないと思います。
スクリプトファイルのあるディレクトリを取得する方法がないかと
調べてみたのですが、ないようですね。
(WScriptオブジェクトにScriptFullNameというのがあるようなのですが
WScriptオブジェクトを取得する方法が分からない...)

パスが固定なら直書きするしかないでしょうね。
パスが固定でない場合はそのたび書き換えるとかかな。
    • good
    • 0
この回答へのお礼

pick52さん

ご回答、ありがとうございます。
おかげさまで、カレントパスがデスクトップになる理由がわかりました。

スクリプトファイルのあるディレクトリを取得する方法については、
私も引き続き検討したいと思います。

ありがとうございました。

お礼日時:2008/07/17 23:07

No1です。

あれからよく考えてみたらサーバ経由で見ているならこの
結果は当然でした。

Scripting.FileSystemObjectはローカルのファイルを操作するもの
なのでそのスクリプトを呼び出しているHTMLがローカル上になければ
期待した通りの動作はしません。

http://localhost/test.html

ローカルのカレントディレクトリは不明(環境によって異なる可能性も)

C:\Documents and Settings\hogehoge\My Documents\test.html

C:\Documents and Settings\hogehoge\My Documents がカレント
ディレクトリ
もし、サーバのディレクトリにあるファイル一覧を取得したいので
あれば、JavaScriptなどのクライアントサイドスクリプティング技術
では不可能なのでCGIやPHPなどのサーバサイドスクリプティング技術を
使用してください。
    • good
    • 0
この回答へのお礼

pick52さん

アドバイスをいただきまして、ありがとうございます。

>正確にはJavaScriptではなくJScriptでは?
 → 知識不足ですみません。参考URLで確認させていただきました。

>組み込みというのはscriptタグで外部読み込みしているということ
>でしょうか。

 → はい。そのとおりです。

>var fso = new ActiveXObject('Scripting.FileSystemObject');
>var myFolder = fso.GetFolder('.');
>alert(myFolder.path);

>として調べてみてください。

 → デスクトップのパスが表示されました。

>Scripting.FileSystemObjectはローカルのファイルを操作するもの
>なのでそのスクリプトを呼び出しているHTMLがローカル上になければ
>期待した通りの動作はしません。

 → htmlファイルはローカル上のファイルで、IE6でファイルオープンしています。IIS等のHTTPサーバ(?)は動作していません。

お礼日時:2008/07/13 23:03

まず、これはScripting.FileSystemObjectなどを使用しているので


正確にはJavaScriptではなくJScriptでは?
また、Windows版IE以外で動作するかどうかも分かりません。
(JavaScriptとJScriptの違いなどは参考URLを見たり自分で調べて
ください)

組み込みというのはscriptタグで外部読み込みしているということ
でしょうか。
こちらでローカルにて試した限りでは正常にカレントディレクトリが
表示されましたが...。

環境などが書いてありませんがもしかするとカレントディレクトリが
デスクトップになっているのでは。
IISなどのサーバを使用している場合は可能性があります。
(IISはデフォルトのカレントディレクトリが実行したファイルの
ディレクトリにならないことが多い)

var fso = new ActiveXObject('Scripting.FileSystemObject');
var myFolder = fso.GetFolder('.');
alert(myFolder.path);

として調べてみてください。

カレントディレクトリは

var objWshShell = new ActiveXObject("WScript.Shell");
objWshShell.CurrentDirectory = 'ディレクトリ';

で変更できます。

参考URL:http://d.hatena.ne.jp/keyword/JScript,http://ja. …
    • good
    • 0

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