1

私はVBスクリプトに非常に慣れていません。特定のテキストを置き換える VB スクリプトが必要です

以下は私のファイルディレクトリです

  1. E:\TEST\98\6549871\1959893\HTML
  2. E:\TEST\98\6549871\1959793\HTML
  3. E:\TEST\98\6549876\1959863\HTML
  4. E:\TEST\96\6749473\6959895\HTML
  5. E:\TEST\99\2548878\5959893\HTML

等。、

各 HTML サブフォルダーのどこに、test.html および img.html ページが含まれます。その HTML ページで、テキスト="img/を見つけたいので、="/image/98/6549871/1959893/HTML/img/で置き換える必要があります。ここで、="/image/はすべてのファイルに共通であり、残りの値は次のとおりです。フォルダ構造ごと (つまり、第 1 レベルのフォルダ名、第 2 レベルのフォルダ名、第 3 レベルのフォルダ名、および第 4 レベルのフォルダ名)

個々のファイルごとに上記のようにする必要があり、このアクティビティを実行するには時間がかかりすぎます。

これについて、フォルダーディレクトリに基づいて単一のショットベースですべての="img/を置き換えるのを手伝ってくれる人はいますか。

前もって感謝します

4

1 に答える 1

0

このようなもの..テストされていませんが、shoudlはあなたを正しい方向に向けます

Option Explicit

Dim fileCount

Sub ProcessSubDirectory( ByVal directory)

On Error Resume Next

Dim fso
Dim dir
Dim folder
Dim file

Set fso = CreateObject("Scripting.FileSystemObject")
Set dir = fso.GetFolder(directory)

If Err.Number <> 0 THen
    MsgBox "Failed to open dir ( " & directory & " )"
    Exit Sub
End If

On Error Goto 0

For Each file in dir.Files
    Call HandleFileFix( file.Path )
Next

For Each folder in dir.SubFolders
    Call ProcessSubDirectory( folder.Path )
Next

Set fso = Nothing

End Sub

Sub HandleFileFix( ByVal file)

Dim fso
Dim f
Dim fo
Dim contents
DIm path

Set fso = CreateObject("Scripting.FileSystemObject")
Set fo = fso.GetFile( file )
Set f = fso.OpenTextFile( file, 1 )

    path = fo.Path
    path = Replace( path, fo.Drive, "")
    path = Replace( path, fo.Name, "")
    path = Replace( path, "\", "/")

If f.AtEndOfStream = false then
    contents = f.ReadAll
End If

f.Close
Set f = Nothing

contents = Replace( contents, "='img/", "='" & path & "/img/")

' write file back to disk
Set f = fso.OpenTextFile( file, 2 )
f.Write contents
f.Close 
fileCount = fileCount + 1
Set f = Nothing

End Sub

fileCount = 0

Call ProcessSubDirectory( "D:\TEST\" )

MsgBox "done (" & CStr(fileCount) & ")"
于 2012-11-19T12:56:59.290 に答える