人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VBScript(WSH)の質問です。
下記のソースを参考にして、特定フォルダ配下のファイル一覧を、相対パスで取得できるような処理にしてください。

http://d.hatena.ne.jp/john-frank/20070509/1178641222


C:\test\index.html
C:\test\css\style.css
C:\test\css\common.css
C:\test\img\1\a.gif
C:\test\img\1\b.gif
C:\test\img\2\c.gif

のようなときに、fso.GetFolder("C:\test")
の処理で

index.html
css\style.css
css\common.css
img\1\a.gif
img\1\b.gif
img\2\c.gif

という結果を改行コード付で変数にて取得したい。



●質問者: P-mako
●カテゴリ:コンピュータ インターネット
✍キーワード:Common CSS GIF HTML INDEX
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● y3kz
●35ポイント ベストアンサー

以下のスクリプトでどうでしょうか。

(取得した一覧を確認するため「C:\test\myResult.txt」に書き出すようにしています。)

Option Explicit

Dim fso, folder, file, subFolder
Dim myResult 'ファイル一覧を格納する変数
Dim myTS '確認用に結果を書き出すためのTextStreamオブジェクト

Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder("C:\test")

myResult = filelist(folder, "")

'以下は結果を確認するためのテキストファイル書き出し処理。
Set myTS = fso.CreateTextFile("C:\test\myResult.txt", True)
myTS.Write myResult
myTS.Close


'ファイル一覧を取得する関数。第1引数:対象フォルダ、第2引数:そのフォルダを示す相対パス
Function filelist(folder, parent_folder)
 For Each file In folder.Files
 filelist = filelist & parent_folder & file.Name & vbCrLf
 Next

 For Each subFolder In folder.SubFolders
 filelist = filelist & filelist(subFolder, parent_folder & subFolder.Name & "\")
 Next
End Function
◎質問者からの返答

ありがとうございます。

試してみましたが、どうも結果がNULLになってしまうようです。

【訂正】できました。


2 ● regnif
●35ポイント

これでできましたよ。

Dim fso, folder
Dim list

Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder("C:\test")

filelist(folder)
MsgBox list

Sub filelist(folder)
For Each file In folder.Files
target = Mid( file.Path, Len( "C:\test" ) + 2 )
list = list & vbCrLf & target
Next
For Each subFolder In folder.SubFolders
filelist(subFolder)
Next
End Sub
◎質問者からの返答

できました。ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ