批处理之家's Archiver

qixiaobin0715 发表于 2018-10-6 22:02

[已解决]EmEditor宏文件js怎样只在指定文件夹中的文本文件中运行?

[i=s] 本帖最后由 qixiaobin0715 于 2018-10-8 10:14 编辑 [/i]

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

Batcher 发表于 2018-10-7 22:32

用 GetExtensionName 判断一下文件后缀名是不是 txt 就能排除其它类型的文件了

qixiaobin0715 发表于 2018-10-8 06:59

[i=s] 本帖最后由 qixiaobin0715 于 2018-10-8 08:20 编辑 [/i]

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=213637&ptid=50875]2#[/url] [i]Batcher[/i] [/b]
不知哪里出问题了,加上if判断之后,其他文件倒是排除了,但是只能对一个文本文件起作用。老大,是这样修改代码吗:[code]  var fso = new ActiveXObject("Scripting.FileSystemObject");
var oFolder = fso.GetFolder(prompt( "Folder", ""));
fc = new Enumerator(oFolder.files);
for (; !fc.atEnd(); fc.moveNext())
{
  var filePath = fc.item();
  var oFile = fso.GetFile(filePath);
  var oFileExName = fso.GetExtensionName(filePath);
  if (oFileExName != "txt")
  {       
    continue;
  }
  editor.OpenFile(filePath, 0, eeOpenDetectUnicode | eeOpenDetectUTF8);
  nFlags=eeFindNext | eeReplaceAll | eeFindReplaceRegExp;
  document.selection.Replace (" ","",nFlags);
}[/code]

Batcher 发表于 2018-10-8 08:14

[b]回复 [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=213642&ptid=50875]3#[/url] [i]qixiaobin0715[/i] [/b]


    在for循环内部添加if判断

qixiaobin0715 发表于 2018-10-8 08:38

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

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.