締切済み

html組込み時のカレントフォルダについて

  • 困ってます
  • 質問No.4171822
  • 閲覧数1996
  • ありがとう数3
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 66% (2/3)

本日、初めて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(".")でカレントフォルダを指定していますが、
この定義はどうなっているのでしょうか?

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

回答 (全3件)

  • 回答No.3

ベストアンサー率 35% (166/466)

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

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

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

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

パスが固定なら直書きするしかないでしょうね。
パスが固定でない場合はそのたび書き換えるとかかな。
お礼コメント
majipon125

お礼率 66% (2/3)

pick52さん

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

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

ありがとうございました。
投稿日時 - 2008-07-17 23:07:15
Be MORE 7・12 OK-チップでイイコトはじまる
  • 回答No.2

ベストアンサー率 35% (166/466)

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などのサーバサイドスクリプティング技術を
使用してください。
お礼コメント
majipon125

お礼率 66% (2/3)

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:30
  • 回答No.1

ベストアンサー率 35% (166/466)

まず、これは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 = 'ディレクトリ';

で変更できます。
AIエージェント「あい」

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

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

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

キーワードでQ&A、テーマを検索する

特集


より良い社会へ。感謝経済プロジェクト始動

ピックアップ

ページ先頭へ