• 締切済み

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

pick52の回答

  • pick52
  • ベストアンサー率35% (166/466)
回答No.2

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
質問者

お礼

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サーバ(?)は動作していません。

関連するQ&A

  • WSH(Jscript)でファイル一覧

    初めまして。 WSH初心者の者です。 ファイル一覧についてご質問があります。 下記のようなスクリプト(.js)を作成したいと思っています。 「D:\\test」の中身 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt これらをWSHで一覧(コレクション)として取得し、 配列のように test[0] = "1.txt"; test[1] = "2.txt"; test[2] = "3.txt"; test[3] = "4.txt"; test[4] = "5.txt"; test[5] = "6.txt"; 別々に取り出したいと思っております。 現状リファレンス等を参考に下記のような記述をしてみました。 ※ほとんどリファレンス通りです;汗 var fso = new ActiveXObject("Scripting.FileSystemObject"); var oFolder = fso.GetFolder("D:\\test"); var oMessage = ""; var oEFiles = new Enumerator(oFolder.Files); for( ; !oEFiles.atEnd(); oEFiles.moveNext()) { var oFiles_name = oEFiles.item(); oMessage += oEFiles.item().Name + "\n"; } WScript.Echo(oMessage); これで実行すると Windows Script Host 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt と表示され、できた!と思っていたのですが、 一つ一つ配列で取り出そうと、 WScript.Echo(oMessage[0]); と足すと、何も入っていない状態になってしまいます。 この場合、どの様に修正、追加すればいいのかわからず、 迷っています。 (根本から使い方を間違っている?) もしお分かりの方がいらっしゃいましたら、 ご教授お願い致します。

  • VBScriptで、任意のフォルダコレクションを取得するには?

    VBScriptについて質問します(マイナーですみません) 任意のフォルダコレクションを取得して、 そのフォルダ名を1つ1つ得たいんですが、 うまくいきません。 FileSystemObjectを作成して、 任意のフォルダ(MyFolder)を取得することはできました。 Set fso=CreateObject("Scripting.FileSystemObject") Set f=fso.GetFolder("C:/....../デスクトップ/MyFolder") いま、MyFolder の下に、複数のサブフォルダがあるとき、 サブフォルダのコレクションを取得して、 サブフォルダ名を1つ1つ得るには、 どうしたらいいのでしょうか? よろしくおねがいします。

  • 「終了していない文字列型の定数です」とでます

    javascriptの以下のコードで「終了していない文字列型の定数です」と出ます。 var fso = new ActiveXObject("Scripting.FileSystemObject"); var file = fso.OpenTextFile("test.txt", 2, true); try { file.WriteLine("ここからレイアウト"); }finally{ file.Close(); } file.WriteLine()の文字が"ここからレイアウト"の時「終了していない文字列型の定数です」のエラーが出ます。ファイル名は「test.js」です。この文字列を出力する方法を教えて下さい。 よろしくお願いします。

  • スクリプトのフルパス取得したい

    言語知ってる人には簡単な話なんでしょうか そのスクリプトが動いているフルパスの取得の方法がわからず悩んでいます スクリプトは以下(最低ロジックのみ抜粋) var fso = new ActiveXObject("Scripting.FileSystemObject"); var topic = WScript.ScriptFullName + "\log"; <---ここをどうすればいいか不明 if(!fso.FolderExists(topic))   fso.CreateFolder(topic); 動作環境は Windows7(32ビット)上となります 目的 スクリプトが置いてあるフォルダにサブフォルダ(子フォルダ log)を作りたい

  • FSOを使いサブフォルダのファイル操作

    同じ階層のサブフォルダにxlsm入るが入っており、VBAによりモジュールを解放しようと試みています。 まずは、FSOを使ってサブフォルダにアクセスしようとしましたが、下から6行目でエラー(424 オブジェクトが必要です)が出てしまい、解決できませんので、ご教示いただけないでしょうか? よろしくお願いします Sub DeleteMain() With Application.FileDialog(msoFileDialogFolderPicker) If Not .Show Then Exit Sub Call DeleteSub(folderPath:=.SelectedItems(1)) End With End Sub Sub DeleteSub(folderPath As String, Optional mycount As Long = 0) Dim fso As Object, myFolders As Object, myfile As Object Set fso = CreateObject("Scripting.FileSystemObject") Set myFolders = fso.GetFolder(folderPath).SubFolders For Each myfile In fso.GetFolder(folderPath).Files mycount = mycount + 1 ' Cells(mycount, 1) = myfile.Path Debug.Print myfile.Path Next For Each myFolders In fso.GetFolder(folder.Path).SubFolders Call DeleteSub(myFolder.Path, mycount) Next Set fso = Nothing Set myFolders = Nothing End Sub

  • vbaでフォルダ属性がうまく取れません

    vbaでフォルダ属性が隠しフォルダかどうかを調べるコードを書いています。 C:\ProgramData\ は隠しフォルダなのに、なぜか16が返って来ます。 試しにvbs(wsh)だと18が返って来ます。 環境は Win10 + Excel2013(32ビット) です。 vbaで返値18を求めるにはどうすれば良いのでしょうか。 Sub test() Dim mPath Dim fso, f mPath = "C:\ProgramData\" Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.GetFolder(mPath) MsgBox f.Attributes End Sub

  • テキストファイルをエクセルに移すマクロのことで?

    以前、複数のテキストファイルをエクセルに移すマクロを教えてもらったのですが、 以下マクロですと、フォルダのパスを指定しないといけません。 今回教えてもらいたいのは、フォルダのパスを指定しなくてもよい方法です。 どういう事かと言うと、仮にディスクトップにフォルダがあるとします。 そのフォルダの中には、マクロが入っているエクセルシートとテキストが入っているフォルダです。 つまり、そのフォルダ内だけで、処理をしたいと考えています。 また、フォルダ名は、その時によって異なります。 今までは、以下の方法を使っていたのですが、ちょっと使いにくいと感じています。 申し訳ありませんが、どなたか教えていただけないでしょうか? Sub Macro() Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") Dim FolderPath As String 'ここのアドレスをファイルが格納されているフォルダのパスに変えてください FolderPath = "C:\Users\・・・" Dim myFile As Object Dim i As Long i = 2 Dim myFolder As Object For Each myFolder In fso.GetFolder(FolderPath).SubFolders For Each myFile In fso.GetFolder(myFolder).Files Cells(i, 4).Value = myFolder Cells(i, 1).Value = myFile.Name Cells(i, 7).Value = fso.OpenTextFile(myFile.Path).ReadAll() i = i + 1 Next Next End Sub Private Sub CommandButton1_Click() End Sub

  • DOSのバッチファイルでカレントフォルダを取得するには?

    現在バッチファイルにファイルをドラッグ&ドロップするとそのファイルを処理するようなバッチを組もうとしています。 おおまかな流れとして  1.ファイルのバックアップ  2.test.exeの引数にファイルのパスを渡す といった事をしたいのですが、バッチファイルにドラッグ&ドロップするとカレントフォルダがC:\Documents and Settings\user\になってしまいます。 バッチファイルのある場所をカレントフォルダとするにはどうすればよいのでしょうか。 以下カレントフォルダを確認した結果です。 OS:Windows2000 実行バッチのパス: C:\Documents and Settings\user\デスクトップ\test.bat ---test.bat---- @echo off cd pause test.bat直接起動 C:\Documents and Settings\user\デスクトップ test.batにファイルをD&D C:\Documents and Settings\user 伝わりづらくて申し訳ございません。 宜しくお願い致します。

  • EXCEL VBAでフォルダ容量の測定

    お世話になります. EXCELでフォルダの容量を自動で測量するツールを作成中です. 大まかな概要としては,1枚目のシートのセルにあらかじめ測定対象となるフォルダのパスを記述しておき, そのパスをもとに2枚目のシートに測定した容量を出力したいと考えています. 作成中のソースから抜粋させて頂きますが,以下の部分が上手くいきません. <<作成中のソース>> Sub FolderSize_Count() Dim FSO As Variant Set FSO = CreateObject("Scripting.FileSystemObject") Dim Path As String With Sheets("Sheet2") Path = Application.Worksheets("sheet1").Range("A1").Value .Cells(1, 1) = FSO.GetFolder("Path").Size End With End Sub <<不明点>> FSO.GetFolder("Path").Size の"Path"の部分には対象フォルダのパスを記述する必要があるが, 別シートから取得した値を" "に反映させる記述が分かりません. ちなみに Application.Worksheets("sheet1").Range("A1").Valueにて,対象フォルダのパスを取得出来ていることと, FSO.GetFolder("C:\test").Sizeにて,Cドライブ直下のtestフォルダの容量を取得できることは確認済みです. お手数お掛けいたしますが,有識者の方,ご教授頂ければ幸いです. 以上,よろしくお願いいたします.

  • マクロのことで再度質問です。

    すいません、先ほど質問した者です。 http://okwave.jp/qa/q7357905.html 以下のマクロを試すと・・ Aのセルに「ファイル名.txt」 Bのセルに「C:\Users\~¥フォルダ名」 となります。 この「.txt」と「C:\Users\~¥」は表示させたくありません。 自分でもいじってみたのですが、できませんでした。 表示させないようにするにはどうすればいいでしょうか? 度々の質問で恐縮ですが、よろしくお願いします。 Sub Macro() Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") Dim FolderPath As String FolderPath = ThisWorkbook.Path Dim myFile As Object Dim i As Long i = 2 Dim myFolder As Object For Each myFolder In fso.GetFolder(FolderPath).SubFolders For Each myFile In fso.GetFolder(myFolder).Files Cells(i, 4).Value = myFolder Cells(i, 1).Value = myFile.Name Cells(i, 7).Value = fso.OpenTextFile(myFile.Path).ReadAll() i = i + 1 Next Next End Sub Private Sub CommandButton1_Click() End Sub