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

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

Ответить
Настройки темы
CMD/BAT - [решено] Замена текста в txt

Пользователь


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

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


Прежде всего хочу сказать, что перелазил все темы, но так и не нашёл подходящую, поэтому решил создать новую .

В общем такая проблема. У нас есть файл 1.txt и в нём такое содержание:

Код: Выделить весь код
Цифровой клавиатурой называется совокупность близко расположенных клавиш с цифрами, 
предназначенных для ввода чисел (например, номеров). Существует два различных варианта 
расположения цифр на таких клавиатурах. В телефонах используется клавиатура, в которой числовые 
значения клавиш возрастают слева направо и сверху вниз. Аналогичный тип клавиатуры используется 
в домофонах и других средствах аудиосвязи (например, в программе Skype), а также на пультах 
дистанционного управления (например, на пульте управления телевизором). ###
Необходимо последние три символа "###" заменить на "Автор Петрович."

Внимание! Есть пару условий! Проблема должна решаться только при помощи bat или cmd и никаких дополнительных программ, текст может быть любой, любого размера, любого кол-во строк букв символов и тд, но в конце всегда будут "###".

Заранее спасибо !

Отправлено: 14:50, 01-06-2011

 

Пользователь


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

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


Кстати если не получается, то можно эти три символа перенести и в первую строку на первое место то есть перед самим текстом. Без разницы, главное чтобы работало.

Отправлено: 15:08, 01-06-2011 | #2



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

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


Пользователь


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

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


@echo off
setlocal enabledelayedexpansion
Set infile=1.txt
Set find=###
Set replace=Автор Петрович.
@echo off
setlocal enabledelayedexpansion
set COUNT=0
for /F "tokens=* delims=," %%n in (!infile!) do (
set LINE=%%n
set TMPR=!LINE:%find%=%replace%!
Echo !TMPR!>>TMP.TXT
)
move TMP.TXT %infile%le%
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:20, 01-06-2011 | #3


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


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

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


У меня похожая ситуация, но не такая. Нужно заменить одну строчку на три. Как это сделать?

заменить
Код: Выделить весь код
package_extract_dir("boot", "/boot");
на
Код: Выделить весь код
assert(package_extract_file("boot.img", "/tmp/boot.img"),
       write_raw_image("/tmp/boot.img", "boot"),
       delete("/tmp/boot.img"));
Можно это как-нибудь реализовать?

Отправлено: 17:21, 05-09-2011 | #4


Аватара для ferget

Разный


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

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


Цитата xGETSx:
У меня похожая ситуация, но не такая. »
насколько не такая? может проще notapad++ использовать

Отправлено: 18:44, 05-09-2011 | #5


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


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

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


может и проще, но нужно так. Я ж не себе пишу, а в программу вставляю.

Не обязательно это делать средствами bat, можно и программу из-под него запустить.

Отправлено: 18:55, 05-09-2011 | #6


Ветеран


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

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


xGETSx, например так (не проверялось):
читать дальше »
Код: Выделить весь код
Option Explicit

' IOMode Enum
Const ForReading   = 1
Const ForWriting   = 2
Const ForAppending = 8


Dim strFileName
Dim strContent

Dim strFind
Dim strReplace


strFileName = WScript.Arguments.Item(0)

strFind    = "package_extract_dir(""boot"", ""/boot"");"
strReplace = "assert(package_extract_file(""boot.img"", ""/tmp/boot.img"")," & vbCrLf & _
	"write_raw_image(""/tmp/boot.img"", ""boot"")," & vbCrLf & _
	"delete(""/tmp/boot.img""));"

With WScript.CreateObject("Scripting.FileSystemObject")
	If .FileExists(strFileName) Then
		With .OpenTextFile(strFileName, ForReading)
			strContent = .ReadAll()
			
			.Close
		End With
		
		With .OpenTextFile(strFileName, ForWriting)
			.Write Replace(strContent, strFind, strReplace)
			
			.Close
		End With
	Else
		WScript.Echo "File [" & strFileName & "] not found"
	End If
End With

WScript.Quit 0

Файл для поиска включения указывается аргументом скрипта:
Код: Выделить весь код
Script.vbs "c:\Sample folder\Sample file.cfg"
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:24, 05-09-2011 | #7


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


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

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


Не работает. Может потому что у меня файл не .cfg?

Отправлено: 22:55, 05-09-2011 | #8


Ветеран


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

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


Всё может быть. Кодировка, формат строк и т.д.

Если файл не слишком большого объёма — обязательно упакуйте в rar/7z, выложите на обменник, ссылку сюда или непосредственно в личку. Посмотрим.

Отправлено: 23:01, 05-09-2011 | #9


Ветеран


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

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


Файл получил.

У меня на Вашем файле — работает. В том плане, что ищет, находит и меняет. Результат в итоге получается, но, очевидно не такой, как нужен, ибо Ваш текстовый файл, как Вы верно указали, формата UNIX, следовательно концы строк у него LF, и, соответственно, в приведённом выше коде достаточно заменить:
Код: Выделить весь код
strReplace = "assert(package_extract_file(""boot.img"", ""/tmp/boot.img"")," & vbCrLf & _
	"write_raw_image(""/tmp/boot.img"", ""boot"")," & vbCrLf & _
	"delete(""/tmp/boot.img""));"
на:
Код: Выделить весь код
strReplace = "assert(package_extract_file(""boot.img"", ""/tmp/boot.img"")," & vbLf & _
	"write_raw_image(""/tmp/boot.img"", ""boot"")," & vbLf & _
	"delete(""/tmp/boot.img""));"
для получения ожидаемого результата.
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:56, 05-09-2011 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Сравнение и замена в файлах .txt Deep2007 Скриптовые языки администрирования Windows 4 19-11-2010 19:08
Поиск текста в txt Centrinar AutoIt 5 23-07-2010 19:59
Разное - [решено] FoxPro 2.6 Замена фрагментов текста в txt-файле Pashka Программирование и базы данных 7 18-01-2010 19:20
CMD/BAT - [решено] Как прочесть из файла .txt только первую строчку текста. Sdib121 Скриптовые языки администрирования Windows 6 15-08-2009 14:26
Офис и Текст - Замена текста Котяра Программное обеспечение Windows 1 29-09-2008 13:51




 
Переход