Board logo

标题: [问题求助] [已解决]EmEditor宏文件js怎样只在指定文件夹中的文本文件中运行? [打印本页]

作者: qixiaobin0715    时间: 2018-10-6 22:02     标题: [已解决]EmEditor宏文件js怎样只在指定文件夹中的文本文件中运行?

本帖最后由 qixiaobin0715 于 2018-10-8 10:14 编辑

如题。从网上得到了一个宏代码,但是如果文件夹中有其他文件总会提示用什么编码打开。不知道如何修改才能只打开文本文件,最好也能处理子文件夹下的文件。代码如下:
  1. var fso = new ActiveXObject("Scripting.FileSystemObject");
  2. var oFolder = fso.GetFolder(prompt( "Folder", ""));
  3. fc = new Enumerator(oFolder.files);
  4. for (; !fc.atEnd(); fc.moveNext())
  5. {
  6.      var filePath = fc.item();
  7.      var oFile = fso.GetFile(filePath);
  8.         editor.OpenFile(filePath, 0, eeOpenDetectAll);
  9.     nFlags=eeFindNext | eeReplaceAll | eeFindReplaceRegExp;
  10.     document.selection.Replace (" ","",nFlags);
  11. }
复制代码

作者: Batcher    时间: 2018-10-7 22:32

用 GetExtensionName 判断一下文件后缀名是不是 txt 就能排除其它类型的文件了
作者: qixiaobin0715    时间: 2018-10-8 06:59

本帖最后由 qixiaobin0715 于 2018-10-8 08:20 编辑

回复 2# Batcher
不知哪里出问题了,加上if判断之后,其他文件倒是排除了,但是只能对一个文本文件起作用。老大,是这样修改代码吗:
  1.   var fso = new ActiveXObject("Scripting.FileSystemObject");
  2. var oFolder = fso.GetFolder(prompt( "Folder", ""));
  3. fc = new Enumerator(oFolder.files);
  4. for (; !fc.atEnd(); fc.moveNext())
  5. {
  6.   var filePath = fc.item();
  7.   var oFile = fso.GetFile(filePath);
  8.   var oFileExName = fso.GetExtensionName(filePath);
  9.   if (oFileExName != "txt")
  10.   {
  11.     continue;
  12.   }
  13.   editor.OpenFile(filePath, 0, eeOpenDetectUnicode | eeOpenDetectUTF8);
  14.   nFlags=eeFindNext | eeReplaceAll | eeFindReplaceRegExp;
  15.   document.selection.Replace (" ","",nFlags);
  16. }
复制代码

作者: Batcher    时间: 2018-10-8 08:14

回复 3# qixiaobin0715


    在for循环内部添加if判断
作者: qixiaobin0715    时间: 2018-10-8 08:38

修改后的完整代码在3楼,成功!!!谢谢老大。




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2