Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   multiple replace - как сделать (https://javascript.ru/forum/misc/71641-multiple-replace-kak-sdelat.html)

rsaburov 02.12.2017 12:26

multiple replace - как сделать
 
Имеется скрипт замеяющий в файлах, указанных в списке D:\list.txt, 12 на 34 (переменная rest)
Код:

var fso = new ActiveXObject("Scripting.FileSystemObject");
var list = fso.OpenTextFile("D:\\list.txt", 1, true);   
var listout = fso.OpenTextFile("D:\\list.txt", 1, true);           
var rest = /12/g;
var rezt = /ab/g;
while (!list.AtEndOfStream) {
var myInputTextStream = fso.OpenTextFile(list.ReadLine(), 1, true);
var myOutputTextStream = fso.OpenTextFile(listout.ReadLine().slice(0,-4)+".wow", 2, true);
while(!myInputTextStream.AtEndOfStream) {
myOutputTextStream.WriteLine(myInputTextStream.ReadAll().replace(rest,"34"));
}
}
myInputTextStream.Close();
myOutputTextStream.Close();
list.Close();
listout.Close();

В дополнение к этой замене необходима замена ab на xy (переменная rezt)
Как дополнить приведенный скрипт?

laimas 02.12.2017 15:54

Цитата:

Сообщение от rsaburov
var list = fso.OpenTextFile("D:\\list.txt", 1, true);
var listout = fso.OpenTextFile("D:\\list.txt", 1, true);

Зачем дважды?

rsaburov 02.12.2017 19:19

без этого не шло ...

laimas 02.12.2017 19:26

list.txt содержит список файлов, в именах которых нужно произвести замену, после чего читаем эти файлы?

rsaburov 02.12.2017 21:27

полные пути и имена
типа E:\Documents\Desktop\tst\FileTree.txt

laimas 02.12.2017 21:30

Ну и зачем иметь две копии списка, из которого выбираются строки?

.replace(rest,"34") заменили 12 на 34, в чем проблема где-то заменить таким же образом ab на xy?

Aetae 02.12.2017 22:06

var fso = new ActiveXObject("Scripting.FileSystemObject");
var list = fso.OpenTextFile("D:\\list.txt", 1, true);            
var rest = /12/g;
var rezt = /ab/g;
while (!list.AtEndOfStream) { 
  var file = list.ReadLine();
  var myInputTextStream = fso.OpenTextFile(file, 1, true); 
  var myOutputTextStream = fso.OpenTextFile(
    file.slice(0,-4) + ".wow"
  , 2, true); 
  myOutputTextStream.Write(
    myInputTextStream
      .ReadAll()
      .replace(rest, "34")
      .replace(rezt, "34")
  )
  myInputTextStream.Close(); 
  myOutputTextStream.Close();
}
list.Close();

rsaburov 03.12.2017 11:51

Aetae, большое Вам спасибо!


Часовой пояс GMT +3, время: 02:51.