原生js 遍历文件夹分析xml并保存

其实这种功能,网上相关的代码多的是,我也是因为今天正好要用到这个功能,所以临时写了下,放这里保存下,以便将来自己或者别人用的上吧。

当然我写的是一个hta文件。下面是完整js代码,都是调用activex控件去做事,所以也没有考虑浏览器兼容什么的。

 代码主要分为:

1.选择目标文件夹

2.遍历目标文件夹中的文件

3.根据需要解析xml文件里内容

4.把解析出来的文件内容存到txt中

<script type='text/javascript'>
var fso;
//入口方法  div#id=tips 显示提示信息
function st(){
document.getElementById('tips').innerText='开始分析,请稍等';
setTimeout(
dosth,
100
)
}
//遍历文件夹方法
function dosth(){
try{
fso=new ActiveXObject("Scripting.FileSystemObject"); 
}catch(e){
alert(e.message);
}

  DeleteLog();
  writetxt('xx,xx,xx');


var path=document.getElementById('path').innerText;
 var   f   =   fso.GetFolder(path);   
 var  fc   =   new   Enumerator(f.files);

  for   (;   !fc.atEnd();   fc.moveNext())   
       {   
               
                  readxml(fc.item().Name);
                  
        } 
  
}
//读取xml方法
function readxml(file)
{

var xmlDoc;
xmlDoc = new ActiveXObject('Microsoft.XMLDOM');//IE浏览器
xmlDoc.async = false;

file=document.getElementById('path').innerText+'\\'+file;

xmlDoc.load(file);

var target=xmlDoc.getElementsByTagName("target") ;

for(var i=0;i<target.length;i++){
var vue='';
if(target[i].getElementsByTagName('ip').length>0){
vue=target[i].getElementsByTagName('ip')[0].childNodes[0].nodeValue;
}
vue+=',';
if(target[i].getElementsByTagName('port').length>0){
vue+=target[i].getElementsByTagName('port')[0].childNodes[0].nodeValue;
}
vue+=',';
if(target[i].getElementsByTagName('protocol').length>0){
 vue+=target[i].getElementsByTagName('protocol')[0].childNodes[0].nodeValue;
}

writetxt(vue);
}
setTimeout(
function(){
document.getElementById('tips').innerText='分析完成,生成result.txt在所选文件夹中';
 },100)
}
//内容写入txt方法
function writetxt(vue){

if (!fso.FileExists(document.getElementById('path').innerText+ "\\result.txt")) {
  
fso.createtextfile(document.getElementById('path').innerText+ "\\result.txt",true);
}
var f = fso.OpenTextFile(document.getElementById('path').innerText+ "\\result.txt", 8, true);
f.WriteLine(vue);  
f.close();

}
//结果删除方法
function DeleteLog() {
     
var strFolder =document.getElementById('path').innerText+ "\\result.txt";
      
if (fso.FileExists(strFolder)) {
 
var f1 = fso.GetFile(strFolder);//获取指定文件,接下来删除
    
f1.Delete();
       
}
 }
//弹出文件夹选择的方法 ,button点击时弹出,选择的文件夹路径保存到div#id=path
function filesel(){
                 var filePath;
                    var objSrc = new ActiveXObject("Shell.Application").BrowseForFolder(0, '请选择保存路径', 0, '');
                    if (objSrc != null) {
                        filePath = objSrc.Items().Item().Path;
                        document.getElementById('path').innerText=filePath;
                        if (filePath.charAt(0) == ':') {
                            alert('请选择文件夹.');
                            return;
                        }
                    }
}
</script>

 

posted @ 2019-04-19 15:43  停车坐爱枫林晚  阅读(1106)  评论(0编辑  收藏  举报