脚本,即删除</HTML>
标记(不带引号)后的所有内容,对于分区中的所有文件进行递归删除。这就像在病毒感染/注入多个HTML文件中的代码后恢复Web服务器内容
答案 0 :(得分:0)
您已将此问题标记为“vbscript”和“wscript”,我不知道,但如果您可以访问unix或linux系统,则可以使用此命令行:
find /path/to/root -exec grep -qi '</html>' -exec sed -ne -i'' 's|</html>.*|</html>|I;1,/<\/html>/Ip' {} \;
检查sed
的命令行选项,确保以正确的方式使用-i
选项。这在FreeBSD中适用于我。
在尝试此类操作之前,请务必备份数据。
答案 1 :(得分:0)
从顶级代码开始测试:
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来遍历文件夹树并为找到的每个文件调用“do do I want”Sub:
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
用一个琐碎的工作人员测试驱动它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>" ) _
由于安全限制,遍历是否会失败?
你的脚本是否会破坏.js,.css或.jpg文件?