Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: [решено] Замена строк.
Показать сообщение отдельно

Ветеран


Contributor


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

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


angel_lyucifer,
Вот CMD
Код: Выделить весь код
@Echo Off	

SetLocal EnableExtensions EnableDelayedExpansion

Set "File=%AppData%\Skype\%SLOGIN%\config.xml"
rem Set "File=Z:\Box_In\config.xml" 

Set "Rep1=^<AdvertPlaceholder^>0^</AdvertPlaceholder^>"
Set "Rep2=^<AdvertEastRailsEnabled^>0^</AdvertEastRailsEnabled^>"

>"%File%.bat.tmp" (FOR /F "usebackq delims=" %%s IN (`More "%File%"`) DO Echo %%s)

Set /A N1=0,N2=0,NN=0
FOR /F "usebackq Skip=2 delims=[]" %%n IN (`Find /N "<AdvertPlaceholder>1</AdvertPlaceholder>" "%File%.bat.tmp"`) DO Set N1=%%n
FOR /F "usebackq Skip=2 delims=[]" %%n IN (`Find /N "<AdvertEastRailsEnabled>1</AdvertEastRailsEnabled>" "%File%.bat.tmp"`) DO Set N2=%%n

>"%File%" (FOR /F "usebackq delims=" %%s IN (`More "%File%.bat.tmp"`) DO (
			Set /A NN+=1
			If Not !NN! EQU %N1% If Not !NN! EQU %N2% Echo %%s
			If !NN! EQU %N1% Echo %Rep1%
			If !NN! EQU %N2% Echo %Rep2%
		   ))
DEL "%File%.bat.tmp" 2>NUL
Но надёжнее VBS
Код: Выделить весь код
Set WSS = CreateObject("WScript.Shell")

File_In = WSS.ExpandEnvironmentStrings("%AppData%") + "\Skype\" + WSS.ExpandEnvironmentStrings("%SLOGIN%") + "\config.xml"
        'MsgBox File_In
        'File_In = "Z:\Box_In\config.xml"  ''''''''''''

File_Out = File_In
        'File_Out = "Z:\Box_In\config.xml.vbs.tmp"   ''''''''''''

ReMass = Array( _
    "<AdvertPlaceholder>1</AdvertPlaceholder>", _
    "<AdvertPlaceholder>0</AdvertPlaceholder>", _
    "<AdvertEastRailsEnabled>1</AdvertEastRailsEnabled>", _
    "<AdvertEastRailsEnabled>0</AdvertEastRailsEnabled>" _
)
N1 = LBound(ReMass)
N2 = UBound(ReMass)

'Set "File=%AppData%\Skype\%SLOGIN%\config.xml"

Set FSO = CreateObject("Scripting.FileSystemObject")

Set NFile = FSO.OpenTextFile(File_In, 1, False)
    S = NFile.ReadAll
NFile.Close

For i = N1 To N2 Step 2
    S = Replace(S, ReMass(i), ReMass(i + 1))
Next

Set NFile = FSO.OpenTextFile(File_Out, 2, True)
    NFile.Write S
NFile.Close

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


Последний раз редактировалось megaloman, 20-02-2017 в 11:58.


Отправлено: 10:55, 20-02-2017 | #6

Название темы: [решено] Замена строк.