Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


можно этот скрипт заставить чтобы он удалял все строки между
Код: Выделить весь код
var Conf = 'Z:\\Box_In\\cfg.Config'
var ConfOut = 'Z:\\Box_In\\cfg.Config'

var Snew = new Array ( 
    '    <add key="SkipPreSelect" value="tra la la" />',
    '    <add key="RefundLockTime" value="777" />',
    '    <add key="aaaRefundLockTime" value="111777" />',
    '    <add key="bbbRefundLockTime" value="222777" />',
    '    <add key="UseSverkaDiff" value="false" />'
);
var Sdel;
Sdel = '<add key="UseSverkaDiff"';
//Sdel = '<appSettings>';

var Send='</appSettings>';
var Skey='<add key';
var Skeyend='>';

var l=Snew.length;
var rn = String.fromCharCode(13,10);
 
var FSO,FConf,SConf;

FSO=WScript.CreateObject("Scripting.FileSystemObject");

FConf = FSO.OpenTextFile(Conf,1);
	SConf = FConf.ReadAll();
FConf.Close();

while (SConf.indexOf(Skey+' ')>0) SConf = SConf.replace(Skey+' ',Skey);
while (SConf.indexOf(Skey+'= ')>0) SConf = SConf.replace(Skey+'= ',Skey+'=');

var Ndel = SConf.indexOf(Sdel);
Ndel = SConf.indexOf(String.fromCharCode(10),Ndel);

var Nend,NNend,SSnew,j,jfind,Tkey,Told;
NNend = SConf.indexOf(Send);
Nend = SConf.lastIndexOf(String.fromCharCode(13),NNend);

if (Ndel>=0) {
	SConf = SConf.replace(SConf.slice(Ndel,Nend+1),'');
	NNend = SConf.indexOf(Send);
	Nend = SConf.lastIndexOf(String.fromCharCode(13),NNend);
}

SSold = SConf.slice(Nend,NNend)+Send;

SSnew = SSold;
for (var i=l-1; i >=0; i--) {
	while (Snew[i].indexOf(Skey+' ')>0) Snew[i] = Snew[i].replace(Skey+' ',Skey);
	while (Snew[i].indexOf(Skey+'= ')>0) Snew[i] = Snew[i].replace(Skey+'= ',Skey+'=');
	
	Tkey = Skey + '="';
	j = Snew[i].lastIndexOf(Tkey);
	Tkey = Snew[i].slice(j,Snew[i].indexOf('"',j+Tkey.length)+1);
	
	jfind = SConf.indexOf(Tkey);
	if (jfind<0) {
		SSnew = rn+Snew[i]+SSnew;
	} else {
		Told = SConf.slice(jfind,SConf.indexOf(Skeyend,jfind)+1);		
		Tkey = Snew[i].slice(j,Snew[i].indexOf(Skeyend,j)+1);
                SConf = SConf.replace(Told,Tkey);
//		WScript.Echo(Told+rn+Tkey);
	};
}
SConf = SConf.replace(SSold,SSnew);

FConf = FSO.CreateTextFile(ConfOut,2);
	FConf.Write(SConf);
FConf.Close();
Можно вообще убить всё в секции appSettings, если указать
Sdel = '<appSettings>'; (сейчас это закомментировано и не работает)
и заново вбить скриптом всё что нужно. Сейчас
Sdel = '<add key="UseSverkaDiff"';
Я не стал писАть как Вы указали: <add key="UseSverkaDiff" value="false" />
посчитал это избыточным. Но если Вам надо именно так - делайте.
Сначала делается удаление, а затем вставка (замена)

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:45, 14-02-2017 | #10