Войти

Показать полную графическую версию : [решено] Замена символа в строках имеющих определенное начало


TRaMeLL
26-12-2018, 14:18
Добрый день,
Есть файл в котором несколько раз встречаются строки начало которых: "НазначениеПлатежа=", нужно в идущих далее данных заменить знак "=" на какой-то другой, например на ":", но только в этой строке, естественно.

Т. е. изначальная строка:
НазначениеПлатежа=Оплата на сумму=10 рублей.

Должна получить вид:
НазначениеПлатежа=Оплата на сумму:10 рублей.

Busla
26-12-2018, 15:33
Не стоит это делать батником.

Iska
26-12-2018, 16:54
TRaMeLL, нужен образец файла (нужно знать кодировку, наличие BOM, вид концов строк). Упакуйте его в архив и приложите к сообщению.

Iska
26-12-2018, 21:02
TRaMeLL, вообще, по-хорошему, нужно обработку импорта в 1С править, дабы она не спотыкалась на втором знаке равенства в строке.

Попробуйте так (на WSH):
Option Explicit

Dim strSourceFile

Dim objFSO
Dim strContent


If WScript.Arguments.Count = 1 Then
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

strSourceFile = objFSO.GetAbsolutePathName(WScript.Arguments.Item(0))

If objFSO.FileExists(strSourceFile) Then
With objFSO.OpenTextFile(strSourceFile)
strContent = .ReadAll()
.Close
End With

With WScript.CreateObject("VBScript.RegExp")
.Pattern = "(^НазначениеПлатежа=.+?)=(.+$)"
.Global = True
.MultiLine = True

If .Test(strContent) Then
strContent = .Replace(strContent, "$1:$2")

objFSO.CopyFile strSourceFile, strSourceFile & ".bak", True

With objFSO.CreateTextFile(strSourceFile, True)
.Write strContent
.Close
End With
Else
WScript.Echo "Nothing found."
End If
End With
Else
WScript.Echo "Can't find source file [" & strSourceFile & "]."
WScript.Quit 2
End If

Set objFSO = Nothing
Else
WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ <Source file>"
WScript.Quit 1
End If

WScript.Quit 0

Путь к исходному файлу указывается аргументом скрипта (также можно просто перетащить исходный файл на скрипт/ярлык на скрипт в Проводнике). Делать специальную проверку, что имя переданного файла имеет строго заданный вид «kl_to_1c.txt» — не стал (если нужно — сделаем).

TRaMeLL
26-12-2018, 21:41
Iska, говорит "Nothing found."

Iska
26-12-2018, 22:03
Хмм… Даже не знаю, что сказать:
https://i.imgur.com/Y66Xf2b.png

https://i.imgur.com/G8R351Z.png
На всякий случай — в какой кодировке сохранили скрипт?

TRaMeLL
26-12-2018, 23:41
На всякий случай — в какой кодировке сохранили скрипт? »
Ага, оно самое, в UTF-8 оказалось. Всё работает, спасибо огромное, снова выручили.




© OSzone.net 2001-2012