[三流君] −−> [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 でテスト可能です。 -【けんぞう!】--------------------------------------------------------- 転職関係、在宅プログラマー、SOHOの広告まとめました http://www.ken3.org/etc/500yen/zaitaku.html いろいろとあるので転機の人はぜひ 『だだ、広告料稼ぎたいだけだろ、紹介料300円〜1500円の小金稼ぎ』 ギクっ、、、バレた(笑)登録料無料、匿名で探せるので在宅で小金稼ぎの人も見てね ------------------------------------------------------------------------ 

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

今回は、 FileSystemObjectの.GetFolderを使用して、 フォルダーのオブジェクトを取得、 For Each objFILE In objDIR.Filesでファイル単位にまわし、 ファイルの一覧を表示してみました。 そんなサンプルプログラムでした。 何かの参考となれば幸いです。 素朴な疑問やリクエスト、クレームなどがあったら、 掲示板 : http://www.ken3.org/cgi-bin/bbs/asp/wforum.cgi に気軽に書き込んでください。 ASP、VBScript勉強中の三流プログラマーのKen3でした。

フィードバック

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

評価・感想

No.067を読んだ満足度(評価)は?
5満足(参考になった)
4まぁまぁ(一部参考になった)
3普通(どちらとも言えない)
2なんかなぁ(期待と違った)
1不満(読んで損した気分)
作者に感想・質問を送る場合は下記に気軽に書いてください
あなたのお名前(ニックネーム) さん

作者からの返信は、 不用 E-mail で受信したい
*質問・感想はメルマガで紹介する場合があります

三流君の主なリンク先

[アクセスランキング] [サイトマップ] [リンク先・相互リンク先など]
ASPで遊ぶ、失敗する 掲示板 バックナンバー 登録と解除
三流プログラマー 業務の愚痴 掲示板 バックナンバー 登録と解除
VBAで楽しくプログラミング 掲示板 バックナンバー 登録と解除
コンビニのオモテとウラ話 掲示板 バックナンバー 登録と解除
www.ken3.org(サイト内)から Google を利用して、

Ken3の日記(weblog) -- [広告・副収入系] [プログラマー業務の愚痴] [VBA系の話題] [ASP系の話題] [コンビニ系ネタ] [その他]

その他 宣伝広告