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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Замена символа в строках имеющих определенное начало

Ответить
Настройки темы
CMD/BAT - [решено] Замена символа в строках имеющих определенное начало

Новый участник


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

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


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

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

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

Отправлено: 14:18, 26-12-2018

 

Ветеран


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

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


Не стоит это делать батником.

Отправлено: 15:33, 26-12-2018 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


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

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


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

Отправлено: 16:54, 26-12-2018 | #3


Ветеран


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

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


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» — не стал (если нужно — сделаем).
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:02, 26-12-2018 | #4


Новый участник


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

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


Iska, говорит "Nothing found."

Отправлено: 21:41, 26-12-2018 | #5


Ветеран


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

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


Хмм… Даже не знаю, что сказать:
Скрытый текст



На всякий случай — в какой кодировке сохранили скрипт?
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:03, 26-12-2018 | #6


Новый участник


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

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


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

Отправлено: 23:41, 26-12-2018 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Замена символа в строках имеющих определенное начало

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - [решено] Групповая замена символа в именах файлов fullstopru Скриптовые языки администрирования Windows 14 26-07-2018 13:47
CMD/BAT - [решено] Запуск .bat определенное количество раз и определенное количество дней 55kadi Скриптовые языки администрирования Windows 24 25-10-2016 07:06
CMD/BAT - [решено] Замена после символа, вставка перед символом AlexVong Скриптовые языки администрирования Windows 4 05-08-2012 13:31
[решено] Замена символа в строке, по номеру [PERL] WestBronx Вебмастеру 1 22-03-2008 14:31
замена символа в тексте (PHP)   Casufi Вебмастеру 3 11-04-2003 11:07




 
Переход