как "пакетную замену" для большого количества файлов в редакторе - PullRequest
1 голос
/ 19 июня 2020

да, я знаю «Пакетную замену всех» , но

мой список замены настолько велик, в нем 200+ элементов, я буду использовать его в большой папке, в которой много файлов.

теперь поведение эмедитера заключается в том, что он использует item1 во всех файлах, а затем использует item2 во всех файлах .....

ожидается: используйте item1 .... item200 в file1 и используйте item1 ... item200 в файле2

как это сделать?

Я пытаюсь использовать макросы (openfile, replace, closefile), но это происходит очень медленно, потому что для открытия файла требуется 50 мс

emeditor 19.9.1

var fso = new ActiveXObject("Scripting.FileSystemObject");
var files = [];
var filesHasModified = [];
function showFolderFileList(folderspec) {    
    var f = fso.GetFolder(folderspec);
    if(/\\(doc|lib|\.git|\.idea|\.vs|dll)$/gi.test(folderspec)){
        return;
    }

    // recurse subfolders
    var subfolders = new Enumerator(f.SubFolders);
    for(; !subfolders.atEnd(); subfolders.moveNext()) {
        showFolderFileList((subfolders.item()).path);
    }  

    // display all file path names.
    var fc = new Enumerator(f.files);
    for (; !fc.atEnd(); fc.moveNext()) {
         var file = fc.item();
         if(/\.(jmx|config|cs|Config|tt|ttinclude|txt|yml|java|bak|xml|cshtml|sh|yaml|js|json|md|properties)$/gi.test(file)){
            files.push(file);
            }

    }

}

showFolderFileList('D:\\Sources.git2');




for( i in files)
{

    var file = files[i];





    editor.OpenFile(file);
    document.selection.Replace("http://172xx","http://offline.esb.xx",eeReplaceAll,0);
    document.selection.Replace("http://172xx1","http://offline.esb.xx",eeReplaceAll,0);
    document.selection.Replace("http://172xx2","http://offline.esb.xx",eeReplaceAll,0);
    //....200 more

    if(document.Saved)
    {
        document.close();
    }
    else
    {
        filesHasModified.push(file);
        document.Save(file);
        document.close();
    }


}

editor.NewFile();
document.selection.Text = filesHasModified.join("\r\n");

emeditor batch replace

1 Ответ

1 голос
/ 21 июня 2020

Я оптимизирую Пакетную замену в файлах в будущей версии. Между тем, попробуйте (обычное) Пакетная замена на Искать во всех документах в группе . Вот как вы можете это сделать:

  1. Обновите EmEditor до версии 19.2.2 (или более поздней).

  2. Откройте EmEditor, выберите Инструменты Меню - Настроить - Вкладка страница и выберите Нет из раскрывающегося списка Когда не подходит и выберите Исправлено значение, указанное с помощью из раскрывающегося списка Ширина .

  3. Открыть все (или некоторые) файлы с помощью EmEditor. Простой способ - перетащить несколько файлов из Windows Explorer в EmEditor.

  4. В EmEditor нажмите Ctrl + H, чтобы открыть диалоговое окно Заменить , щелкните Пакет >> , установите Искать все открытые документы в группе , убедитесь, что список пакетов обновлен, и нажмите кнопку Пакетная замена всех .

(обычная) пакетная замена будет работать так, как вы ожидаете (используйте item1 .... item200 в file1 и используйте item1 ... item200 в file2, et c.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...