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

当然我写的是一个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>

原生js 遍历文件夹分析xml并保存的更多相关文章

  1. C#保留2位小数几种场景总结 游标遍历所有数据库循环执行修改数据库的sql命令 原生js轮盘抽奖实例分析(幸运大转盘抽奖) javascript中的typeof和类型判断

    C#保留2位小数几种场景总结   场景1: C#保留2位小数,.ToString("f2")确实可以,但是如果这个数字本来就小数点后面三位比如1.253,那么转化之后就会变成1.2 ...

  2. VBScript Sample:遍历文件夹并获取XML文件中指定内容

    案例: 我有一个文件夹,里面有很多子文件夹,每个子文件夹中都存在一个相同名字的XML文件,XML文件里面的标签结构相同,只是内容不同,XML文件中包含ID,Name等标签. 文件夹及文件结构如下图: ...

  3. python os.walk()遍历文件夹

    转自 http://alanland.iteye.com/blog/612459 via @alanland 今天第一次进行 文件遍历,自己递归写的时候还调试了好久,(主要因为分隔符号的问题),后来发 ...

  4. 个人永久性免费-Excel催化剂功能第83波-遍历文件夹内文件信息特别是图像、音视频等特有信息

    在过往的功能中,有体现出在Excel上管理文件的极大优势,在文件的信息元数据中,有图片和音视频这两类特有的属性数据,此篇对过往功能的一个补充,特别增加了图片和音视频信息的遍历功能. 使用场景 在文件管 ...

  5. Qt之遍历文件夹

    关于Qt操作文件夹.文件的知识用途较多,比如遍历下一层乃至所有子孙文件.文件夹,获取它们的一些信息(大小.类型.最后更改时间等).当然,也可以进行级联删除.     首先看简单的:   一.Qt遍历文 ...

  6. Qt之遍历文件夹(经典详解)

    关于Qt操作文件夹.文件的知识用途较多,比如遍历下一层乃至所有子孙文件.文件夹,获取它们的一些信息(大小.类型.最后更改时间等).当然,也可以进行级联删除.     首先看简单的: 一.Qt遍历文件夹 ...

  7. Android开发手记(21) 遍历文件夹

    我们在遍历文件夹的时候由于涉及到SD卡相关操作,所以我们需要添加如下权限: <uses-permission android:name="android.permission.WRIT ...

  8. PHP遍历文件夹下的文件和获取到input name的值

    <?php$dir = dirname(__FILE__); //要遍历的目录名字 ->当前文件所在的文件夹//$dir='D:\PHP\wamp\www\admin\hosts\admi ...

  9. 写个批处理脚本来帮忙干活--遍历文件夹&字符串处理

    这次打算写几篇关于脚本方面的博客,主要是记录一下 Gradle 脚本和批处理脚本的一些写法,方便后续查阅. 前言 平常开发过程中,一些较为重复的手工性工作,如果能让脚本来帮忙处理,自然是最好的,刚好之 ...

随机推荐

  1. util.go 源码阅读

        }     h := md5.New()     baseString, _ := json.Marshal(obj)     h.Write([]byte(baseString))      ...

  2. upload.go

    package api import (     "os"     "bytes"     "mime/multipart"     &qu ...

  3. client.go

    package)*time.Second) ], {         hasConn := false         waitc := time.After(cfg.DialTimeout)     ...

  4. BZOJ_3613_[Heoi2014]南园满地堆轻絮_二分答案

    BZOJ_3613_[Heoi2014]南园满地堆轻絮_二分答案 Description 小 Z 是 ZRP(Zombies’ Republic of Poetry,僵尸诗歌共和国)的一名诗歌爱好者, ...

  5. 带你了解SDL

    SDL(英语:Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成.SDL提供了数种控制图像.声音.输出入的函数,让开发者只要用相同或是相似的代码就可 ...

  6. python接口自动化(二十三)--unittest断言——上(详解)

    简介 在测试用例中,执行完测试用例后,最后一步是判断测试结果是 pass 还是 fail,自动化测试脚本里面一般把这种生成测试结果的方法称为断言(assert).用 unittest 组件测试用例的时 ...

  7. Hadoop大数据部署

    Hadoop大数据部署 一. 系统环境配置: 1. 关闭防火墙,selinux 关闭防火墙: systemctl stop firewalld systemctl disable firewalld ...

  8. 『动态』动态JSON万能转换函数 + .Net40 dynamic动态数据绑定

    不废话,调用代码: static void Main(string[] args) { string json = File.ReadAllText("2.txt", Encodi ...

  9. 使用BeautifulSoup和正则表达式爬取时光网不同地区top100电影并使用Matplotlib对比

    还有一年多就要毕业了,不准备考研的我要着手准备找实习及工作了,所以一直没有更新. 因为Python是自学不久,发现很久不用的话以前学过的很多方法就忘了,今天打算使用简单的BeautifulSoup和一 ...

  10. Netty源码—七、内存释放

    Netty本身在内存分配上支持堆内存和直接内存,我们一般选用直接内存,这也是默认的配置.所以要理解Netty内存的释放我们得先看下直接内存的释放. Java直接内存释放 我们先来看下直接内存是怎么使用 ...