[三流君] −−>
[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系の→[掲示板]←を覗く、質問を書き込む
評価・感想
三流君の主なリンク先
[アクセスランキング]
[サイトマップ]
[リンク先・相互リンク先など]
Ken3の日記(weblog) --
[広告・副収入系]
[プログラマー業務の愚痴]
[VBA系の話題]
[ASP系の話題]
[コンビニ系ネタ]
[その他]
その他 宣伝広告