VBSの質問です

hoge フォルダの中に
hoge
|-01
|-02
|-03
|-04
|-・
|-・
|-・
と数字の連番の名前がついたフォルダが入っています
その各数字フォルダの中にa.htmlが入っています。

hogeの一つ上のフォルダに以下のテキストが入力されたhtmlファイルを作りたいのですがどのようなVBSを組めばいいでしょうか?教えてください

hoge.html
***************
http://hoge/01/a.html
http://hoge/02/a.html
http://hoge/03/a.html
http://hoge/04/a.html
http://hoge/・/a.html
http://hoge/・/a.html
***********
よろしくお願いします。

回答の条件
  • 1人1回まで
  • 13歳以上
  • 登録:2014/12/02 08:18:06
  • 終了:2014/12/05 10:51:43

ベストアンサー

id:a-kuma3 No.1

a-kuma3回答回数4367ベストアンサー獲得回数18032014/12/02 09:05:30

ポイント500pt

hoge フォルダにある全てのフォルダについて、その中にある a.html を探して、見つかったら URL をコンソールに出力します。

targetFolderName = "D:\test\hoge"   ' ※ hoge フォルダのパス

Set fs = WScript.CreateObject("Scripting.FileSystemObject")
Set targetFolder = fs.getFolder(targetFolderName)
For Each folder In targetFolder.SubFolders
    For Each f In folder.Files
        If f.Name = "a.html" Then
            WScript.Echo "http://" & targetFolder.Name & "/" & folder.Name & "/" & f.Name
        End If
    Next
Next

ファイルへの保存は、リダイレクトを使ってください。

d> cscript //Nologo hoge.vbs > list.html




追記です。

vbsファイルの中で保存先を指定して
vbsを実行するだけで指定先にhtmlファイルを保存するにはどうすればいいでしょうか?

以下のようにしてください。

targetFolderName = "D:\test\hoge"   ' ※ hoge フォルダのパス

Set fs = WScript.CreateObject("Scripting.FileSystemObject")
Set targetFolder = fs.getFolder(targetFolderName)
Set parentFolder = targetFolder.ParentFolder
Set output = fs.CreateTextFile(parentFolder.Path & "\list.html", True)

For Each folder In targetFolder.SubFolders
    For Each f In folder.Files
        If f.Name = "a.html" Then
            output.WriteLine "http://" & targetFolder.Name & "/" & folder.Name & "/" & f.Name
        End If
    Next
Next
output.Close
他2件のコメントを見る
id:fashudifhajs

すみません その出力したテキストの前に  ”アドレス一覧”
後ろに ”以上”
という文字を入れたいのですが その場合どこを変更すればいいのでしょうか?

2014/12/02 18:34:46
id:a-kuma3

こんな感じです。

targetFolderName = "D:\test\hoge"   ' ※ hoge フォルダのパス

Set fs = WScript.CreateObject("Scripting.FileSystemObject")
Set targetFolder = fs.getFolder(targetFolderName)
Set parentFolder = targetFolder.ParentFolder
Set output = fs.CreateTextFile(parentFolder.Path & "\list.html", True)
output.WriteLine "アドレス一覧"

For Each folder In targetFolder.SubFolders
    For Each f In folder.Files
        If f.Name = "a.html" Then
            output.WriteLine "http://" & targetFolder.Name & "/" & folder.Name & "/" & f.Name
        End If
    Next
Next
output.WriteLine "以上"
output.Close
2014/12/02 18:46:41

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません