Начните с кода верхнего уровня, чтобы проверить:
Dim aTests : aTests = Array( _
Array( "", "", "" ) _
, Array( "<html></html>junk", "</html>", "<html></html>" ) _
)
Dim aTest
For Each aTest In aTests
WScript.Echo qq(aTest(0))
WScript.Echo qq(aTest(1))
WScript.Echo qq(cutTail(aTest(0), aTest(1)))
Wscript.Echo CStr(aTest(2) = cutTail(aTest(0), aTest(1)))
WScript.Echo
Next
функция, которая может решить вашу первую подзадачу - очистка строки:
Function cutTail(sTxt, sFnd)
cutTail = sTxt
Dim nPos : nPos = Instr(1, sTxt, sFnd, vbTextCompare)
If 0 < nPos Then cutTail = Left( sTxt, nPos + Len(sFnd) - 1)
End Function
Написать голые кости Sub to traverseдерево папок и вызывайте подпункт «делай, что я хочу» для каждого найденного файла:
Sub walkDirs(oDir, fFile)
Dim oItem
For Each oItem In oDir.Files
fFile oItem
Next
For Each oItem In oDir.SubFolders
walkDirs oItem, fFile
Next
End Sub
Протестируйте его с помощью простого работника Предоставленный подпункт:
Dim sRDir : sRDir = "..\data"
Dim fFile : Set fFile = GetRef("justPrint")
walkDirs goFS.GetFolder(sRDir), fFile
Sub justPrint(oFile)
WScript.Echo "Processing:", qq(oFile.Path)
End Sub
Сначала напишитеверсия попытки для рабочего Sub, который очищает файл:
Sub cleanHtml(oFile)
WScript.Echo "Processing:", qq(oFile.Path)
Dim sAll : sAll = cutTail(OFile.OpenAsTextStream(ForReading).ReadAll(),"</html>")
OFile.OpenAsTextStream(ForWriting).Write sAll
End Sub
Используйте его в тестовой папке с типичным набором образцов файлов.Поищите проблемы:
Будет ли срез cutTail для таких данных, как:
, Array( "<html></html>", "</HTml>", "<html></html>" ) _
, Array( "<html><!--</html>-->keep</html>junk", "</HTml>", "<html><!--</html>-->keep</html>" ) _
Произойдет ли сбой обхода из-за ограничений безопасности?
Не закроется ли ваш скрипт.или .jpg файлы?