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

当然我写的是一个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. Tomcat 优化方案 和 配置详解(转)

    转自 Tomcat 优化方案 和 配置详解 http://201605130349.iteye.com/blog/2298985 Server.xml配置文件用于对整个容器进行相关的配置. <S ...

  2. 【莫比乌斯反演】BZOJ2005 [NOI2010]能量采集

    Description 求sigma gcd(x,y)*2-1,1<=x<=n, 1<=y<=m.n, m<=1e5. Solution f(n)为gcd正好是n的(x, ...

  3. selenium处理iframe定位于切换问题解决办法

    首先还是围绕以下几个方面来看: 1.什么是iframe? 2.为什么我们要定位iframe? 3.我们怎样定位iframe,与切换iframe? 1.什么是iframe? ♦ b/s架构都使用ifra ...

  4. Postman----request的body中实现数据驱动

    使用场景: 一个接口多次执行,要求body中的某个参数在每次运行时都要填写不同的值,根据不同值的传入,返回不同的结果 参考示例:通过接口测试创建5条待办名称不一样的待办事项.名称格式不作要求 解决方法 ...

  5. FPGA学习笔记(七)——FSM(Finite State Machine,有限状态机)设计

    FPGA设计中,最重要的设计思想就是状态机的设计思想!状态机的本质就是对具有逻辑顺序和时序规律的事件的一种描述方法,它有三个要素:状态.输入.输出:状态也叫做状态变量(比如可以用电机的不同转速作为状态 ...

  6. 第四次作业—— 性能测试(含JMeter实验)

    一.回答下述问题 1.性能测试有几种类型?它们之间什么关系? 答:性能测试根据其不同的测试目的分为以下几类. (1)性能验证测试:验证系统是否达到事先已定义的系统性能指标.能否满足系统的性能需求.这种 ...

  7. AI - TensorFlow - 示例03:基本回归

    基本回归 回归(Regression):https://www.tensorflow.org/tutorials/keras/basic_regression 主要步骤:数据部分 获取数据(Get t ...

  8. OpenResty 在又拍云容器平台中的应用

    大家好,我是又拍云叶靖,今天主要分享 OpenResty 在又拍云容器平台中的应用.目前又拍云有很多产品,其中很多都使用了 OpenResty 技术,比如又拍云的 CDN .网关都是基于 OpenRe ...

  9. asp.net core系列 51 Identity 授权(下)

    1.6 基于资源的授权 前面二篇中,熟悉了五种授权方式(对于上篇讲的策略授权,还有IAuthorizationPolicyProvider的自定义授权策略提供程序没有讲,后面再补充).本篇讲的授权方式 ...

  10. ES 11 - 配置Elasticsearch的映射 (mapping)

    目录 1 映射的相关概念 1.1 什么是映射 1.2 映射的组成 1.3 元字段 1.4 字段的类型 2 如何配置mapping 2.1 创建mapping 2.2 更新mapping 2.3 查看m ...