[三流君] −−> [ASPで遊ぶ、失敗する] −−> [バックナンバー一覧]
−−> No.067 FileSystemObjectの.GetFolderを使用

FileSystemObjectの.GetFolderを使用


読者から いただいたご指摘、
-- 2007/09/11 12:03:34 --
GetExtensionNameで拡張子を取得したほうが汎用性があがるよ。
またSet objDIR = Nothing
で明示的にメモリ解放するのがルール。解放しないならセッションに入れて毎回オブジェクトが存在するか確認するとよいですね。
--


本文(発行内容)


<FileSystemObjectの.GetFolderを使用>
(ディレクトリ内のファイル一覧を表示する)

こんにちは、三流プログラマーのKen3です。 今回は、 ファイル一覧を表示してみたいと思います。

/* * 1.今回のキッカケ */

いつものように、検索で、 ASP ファイル一覧 で検索すると、 VBA系のDir関数がひっかかります(笑) 今回は、苦情メールもらっていないけど、 ASPでサーバー上のファイル一覧を取ってみたいと思います。

/* * 2.FileSystemObjectの.GetFolderを使用 */

いつもの、いきなりサンプルを掲載する http://www.ken3.org/cgi-bin/test/test067-1.asp でテスト可能です。 <%@LANGUAGE=VBScript%> <html> <head> <title>ディレクトリ内のファイル一覧表示 FileSystemObjectの.GetFolder</title> </head> <body> <!-- Ken3 --><!-- #include file="info.inc" --> <h2>ディレクトリ内のファイル一覧を表示する<br>FileSystemObjectの.GetFolder</h2> FileSystemObjectの.GetFolderを使用して、ファイルの一覧を取得してみます<br> まずは、今のフォルダーが知りたいので(自分のHD上の位置)<br> Server.MapPath(".")とドットを指定すると<br> [<%=Server.MapPath(".")%>]とフォルダー名が取得できます<br> <br> 次は、.GetFolderを使用して、フォルダーオブジェクトを取得します<br> For Each OBJ In .Files でファイルのコレクションにアクセスします。<br> ※下記の実行結果とソースを見てください。<br> <hr> <% '*1 FileSystemObjectを生成します、、って英文、そのままジャン。 Set objFS = Server.CreateObject("Scripting.FileSystemObject") '*2 フォルダーの名称を取り出す strFDIRNAME = Server.MapPath(".") 'フォルダー名取得 Response.Write strFDIRNAME & "のファイル一覧です<br>" & vbCRLF '*3 .GetFolderで、フォルダーオブジェクトを取得します Set objDIR = objFS.GetFolder(strFDIRNAME) '*4 .Filesコレクションにアクセスする For Each objFILE In objDIR.Files strFNAME = objFILE.Name '取り出したobjFILEの.Nameを取得 If Right(strFNAME, 4) = ".asp" Then '.ASPならリンクを作る Response.Write "<a href='" & strFNAME & "'>" Response.Write strFNAME & "</a>" & vbTab Else Response.Write strFNAME & vbTab End If 'おまけで更新日の表示 Response.Write objFILE.DateLastModified & "<br>" & vbCRLF Next %> <hr> </body> </html>

/* * 3.簡単な解説 */

'*1 FileSystemObjectを生成します、、って英文、そのままジャン。 Set objFS = Server.CreateObject("Scripting.FileSystemObject") まずは、File処理基本の窓口、FileSystemObjectを作成します。 窓口って表現が適切かわからないけど、入り口のオブジェクトです。 次は、フォルダーの名前がほしかったので、 '*2 フォルダーの名称を取り出す strFDIRNAME = Server.MapPath(".") 'フォルダー名取得 Response.Write strFDIRNAME & "のファイル一覧です<br>" & vbCRLF と Server.MapPath(".") で、現在位置を取り出します。 取り出したフォルダー名を.GetFolderへ引数で渡し、 '*3 .GetFolderで、フォルダーオブジェクトを取得します Set objDIR = objFS.GetFolder(strFDIRNAME) 今度は、フォルダーのオブジェクトを取得します。 フォルダーのオブジェクトが取得できたら、 For Each objFILE In objDIR.Files で、フォルダーオブジェクトから、ファイルのオブジェクトを取り出します。 '*4 .Filesコレクションにアクセスする For Each objFILE In objDIR.Files strFNAME = objFILE.Name '取り出したobjFILEの.Nameを取得 If Right(strFNAME, 4) = ".asp" Then '.ASPならリンクを作る Response.Write "<a href='" & strFNAME & "'>" Response.Write strFNAME & "</a>" & vbTab Else Response.Write strFNAME & vbTab End If 'おまけで更新日の表示 Response.Write objFILE.DateLastModified & "<br>" & vbCRLF Next あとは、取り出したファイルオブジェクトの ..Name で、ファイル名 ..DateLastModified で、更新日 を取り出し、画面に表示してます。 それだけだと、味気ないので、 Right関数で後ろから4文字取り出し、 ..aspだったら、リンクのタグ処理を行いました。 意外と今回も簡単にフォルダー内のファイル一覧を取得することが出来ました。 http://www.ken3.org/cgi-bin/test/test067-1.asp でテスト可能です。

/* * 4.終わりの挨拶 </HTML> */

今回は、 FileSystemObjectの.GetFolderを使用して、 フォルダーのオブジェクトを取得、 For Each objFILE In objDIR.Filesでファイル単位にまわし、 ファイルの一覧を表示してみました。 そんなサンプルプログラムでした。 何かの参考となれば幸いです。 ASP、VBScript勉強中の三流プログラマーのKen3でした。

フィードバック

いただいたご指摘、
-- 2007/09/11 12:03:34 --
GetExtensionNameで拡張子を取得したほうが汎用性があがるよ。
またSet objDIR = Nothing
で明示的にメモリ解放するのがルール。解放しないならセッションに入れて毎回オブジェクトが存在するか確認するとよいですね。
--


ページフッター

ここまで、読んでいただきどうもです。目的の情報が見つかったか?少々心配しつつ、、、

三流君へ メッセージを送る

感想や質問・要望・苦情など 三流君へメッセージを送る。
返信例 XXXXさんへ
下記のフォームからメッセージを送ることができます。


あなたのお名前(ニックネーム):さん
返信は?:

アドレス:に返事をもらいたい
感想や質問↓:


(感想や質問・要望・苦情はHPで記事に載せることがあります。)

種類別のリンク や 広告など

[三流君(TOP ken3.org へ戻る)] / [ASPで遊ぶ、失敗する] / [ASP記事 バックナンバー目次]


Blogとリンク:[三流君のMemo別館]/ [ASP 三流君のソースコード置き場]/ [Ken3Video YouTubeで動画解説]
広告:

気になった ジャンル ↓を選択してください。

まぁ、基本はデータの受け取りかなぁ。
・[Form等を使用したデータのやり取り]・・・ASPと言っても、HTMLの入力フォームからデータを受け取ります。POSTやGETでやりとりを押さえますか。

次は、データの入出力 で ADOを使った(ADOで接続) と SQLの解説を少々
・[ADOでMdbファイルを使う]・・・MDBと接続して、簡単な追加・更新・削除を行った。
・[ADOでExcelと接続してみた]・・・.xlsと接続してSQLを使ってみた。
・[ADOでCSVと接続してみた]・・・.CSV テキストを読み出した。※更新・削除はできません

広告:



DBが使えるので、あまり使用しないけど、普通のテキストファイル処理
・[テキストファイル処理]・・・ファイルを開いて、書き込む。1行読み込みなどを軽く

VBScriptでFormat関数が無いなど、微妙にVBAと違うけど
[VBScript関数関係の説明]・・・少し、処理を書いてみた。
[その他処理サンプル]・・・あまり良いサンプル作れなかったけど。。。
何かの参考となれば幸いです。



[三流君(TOP ken3.org へ戻る)] / [ASPで遊ぶ、失敗する] / [ASP記事 バックナンバー目次]


広告: