[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
将以下代码以 Unicode 编码保存为 FixHtmlVirus.js 后,双击文件图标运行。
注意:使用前,请备份原文件。
  1. //name: FixHtmlVirus.js
  2. //js codepage:ule
  3. //fix html codepage:utf-8
  4. main();
  5. function main()
  6. {
  7. FixHtmlVirus();
  8. };
  9. //修复病毒感染的Html文件
  10. function FixHtmlVirus()
  11. {
  12. var sInfo = '';
  13. var sFolder = BrowseForFolder("请选择要修复的HTML文件夹(注意自行备份文件!):"); //获取用户选择的文件夹
  14. if (sFolder == '')
  15. {
  16. WScript.Echo('提示:没有选择文件夹,程序退出。');
  17. return 0;
  18. }
  19. var aFile = ScanFolder(sFolder); //获取文件夹所有文件夹、文件列表
  20. for (var i=0; i<aFile.length; i++)
  21. {
  22. if (/^(.+)(\.html)$/i.test(aFile[i])) //过滤其他文件,只操作 *.html 文件
  23. {
  24. var html = ReadText(aFile[i]), html2 = ''; //以 utf-8 编码读取 .html 文件
  25. var aHtml = html.split('\r\n'); //将读取的内容按行(\r\n)拆分成数组
  26. var sEnd = '', sVir = '';
  27. for (var j=0; j<aHtml.length; j++)
  28. {
  29. if (aHtml[j].toLowerCase().indexOf('</html>') != -1) // .html 文件尾部标记
  30. {
  31. aHtml[j] = aHtml[j].substr(0,2000); //限制长度,提高正则速度
  32. sEnd = aHtml[j].replace(/^(.*<\/html>)(.*)$/igm, '$1'); //提取末行内容
  33. sVir = aHtml[j].replace(/^(.*<\/html>)(.*)$/igm, '$2'); //提取部分病毒内容
  34. aHtml[j] = sEnd; //修正末行内容
  35. };
  36. html2 += aHtml[j] + '\r\n'; //将修正后的内容提交到 html2
  37. if (sEnd != '') //结束行
  38. {
  39. if (sVir != '' || aHtml.length - j > 2) //找到病毒
  40. {
  41. SaveText(aFile[i], html2); //保存修正后的内容
  42. if (sInfo != '') sInfo += '\r\n'; //记录修正的文件路径
  43. sInfo += aFile[i]; //记录修正的文件路径
  44. };
  45. break;
  46. };
  47. };
  48. }
  49. }
  50. if (sInfo == '')
  51. {
  52. WScript.Echo('提示:没有文件需要修复。');
  53. } else {
  54. WScript.Echo('提示:以下文件已被修复:\r\n' + sInfo);
  55. };
  56. }
  57. //文件夹选择对话框
  58. function BrowseForFolder(sTips)
  59. {
  60. var BIF_returnonlyfsdirs = 0x0001;
  61. var BIF_editbox= 0x0010;
  62. var oShell = new ActiveXObject("Shell.Application")
  63. var oFolder = oShell.BrowseForFolder(0x0, sTips, BIF_editbox + BIF_returnonlyfsdirs)
  64. if (oFolder==null) {return("")} else {return(oFolder.self.path + '\\')}; //return(oFolder.items().item().path+'\\')
  65. }
  66. // 获取文件夹所有文件夹、文件列表(数组)
  67. function ScanFolder(strPath)
  68. {
  69. if (strPath.substr(strPath.length-1,1) != '\\') {strPath += '\\';}
  70. var arr=[];
  71. var DO_SCAN_FOLDER=function(arr,folderSpec)
  72. {
  73. try {
  74. var fso = new ActiveXObject('Scripting.FileSystemObject');
  75. var oFolder = fso.GetFolder(folderSpec);
  76. if (oFolder != null){
  77. var oFiles = new Enumerator(oFolder.files);
  78. for (; !oFiles.atEnd(); oFiles.moveNext()) arr.push(oFiles.item().path);
  79. var oSubFolders = new Enumerator(oFolder.subfolders);
  80. for (; !oSubFolders.atEnd(); oSubFolders.moveNext()) {
  81. arr.push(oSubFolders.item().path + '\\');
  82. DO_SCAN_FOLDER(arr, oSubFolders.item());
  83. }
  84. }
  85. }catch(e){};
  86. }
  87. arr.push(strPath);
  88. DO_SCAN_FOLDER(arr,strPath);
  89. return(arr);
  90. }
  91. // 使用 utf-8 编码读写文本文件
  92. function ReadText(FileName){ return Pfile(FileName, "utf-8", "ForReading", ""); }
  93. function SaveText(FileName, TextString){ return Pfile(FileName, "utf-8", "ForWriting", TextString); }
  94. function SaveWSH(FileName, TextString){ return Pfile(FileName, "Unicode", "ForWriting", TextString); }
  95. function LogText(FileName, TextString){ return Pfile(FileName, "utf-8", "ForAppending", TextString); }
  96. function Pfile(FileName, FileCode, strType, TextString){
  97. var fso = new ActiveXObject("Scripting.FileSystemObject");
  98. var objStream = new ActiveXObject("ADODB.Stream");
  99. objStream.Type = 2;
  100. objStream.Mode = 3;
  101. objStream.Charset = FileCode; //不同编码时自己换,Chinese (Simplified) (GB2312),中文 GBK ,繁体中文 Big5 ,日文 EUC-JP ,韩文 EUC-KR,charset=UTF-8(国际化编码),ANSI,Unicode,unicode big endian
  102. if (fso.FileExists(FileName)==true) {
  103. objStream.Open();
  104. objStream.LoadFromFile(FileName);
  105. if (strType=="ForReading") TextString = objStream.ReadText();
  106. if (strType=="ForAppending") TextString += objStream.ReadText();
  107. objStream.Close();
  108. }
  109. if (strType=="ForWriting" || strType=="ForAppending") {
  110. objStream.Open();
  111. objStream.WriteText(TextString);
  112. objStream.SaveToFile(FileName, 2);
  113. objStream.Close();
  114. }
  115. fso = null;
  116. objStream = null;
  117. if (strType=="ForReading"){return(TextString)};
  118. if (strType=="ForWriting" || strType=="ForAppending"){return(0)};
  119. }
复制代码
1

评分人数

『千江有水千江月』千江有水,月映千江;万里无云,万里青天。    http://yu2n.qiniudn.com/

TOP

返回列表