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

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

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

Аватара для angel_lyucifer

Старожил


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


Конфигурация

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


Привет всем!
У меня есть только один файл 1.txt он содержит много строчек английских и русских, среди них есть одна строка #sound_on_vlp только её нужно заменить на #sound_off_vlp при запуске батника. А другие строки оставались неизменными и в таком же порядке...
Я нашёл на вашем форуме похожую тему, но в той теме приведённый пример не подходит.
http://forum.oszone.net/thread-198866.html
Пожалуйста помогите, создать такой батник?

-------
Век живи, век учись! =)


Отправлено: 22:08, 04-12-2013

 

Ветеран


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

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


angel_lyucifer, пробуйте
Код: Выделить весь код
@echo off
setlocal EnableDelayedExpansion

set filename=old.txt
set $filename=new.txt

set in=#sound_on_vlp
set out=#sound_off_vlp

for /f "tokens=1* delims=]" %%A in ('find /v /n "" ^<"%filename%"') do (
	set line=%%B
	if "!line!"=="%in%" (echo %out%>>%$filename%) else (echo.!line!>>%$filename%)
		)
del /q %filename%
ren "%$filename%" "%filename%"
	
exit /b
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:05, 04-12-2013 | #2



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

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


Аватара для angel_lyucifer

Старожил


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

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


Цитата sov44:
set filename=old.txt set $filename=new.txt »
У меня есть только один файл txt.

-------
Век живи, век учись! =)


Отправлено: 19:50, 05-12-2013 | #3


Ветеран


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

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


angel_lyucifer, %$filename% - временный файл с нужным результатом. Генерируется скриптом и затем подменяет оригинальный %filename%

Отправлено: 20:08, 05-12-2013 | #4


Аватара для angel_lyucifer

Старожил


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

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


Ясно, спасибо! -)

-------
Век живи, век учись! =)


Отправлено: 23:52, 05-12-2013 | #5


Ветеран


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

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


2 all
Всем здравствуйте.

Пожалуйста, помогите мне.
1) есть файл 1
2) пример файла 1
Скрытый текст
Код: Выделить весь код
DialogType=1
DockAutoload=1
AltLineFill=28
SaveRelative=1
SaveOnExitEnable=1
SaveSessions=1
WindowRect=52010000270100005C0200008A010000
ModalDialogEnable=0
AltLineFill=398
SaveData=2039

Что хочется:
1) запускается файл *.bat или *.cmd
2) после запуска файла *.bat или *.cmd, в файле 1 надо заменить все строки, которые содержат AltLineFill= (после = может быть написано что угодно) на AltLineFill=0
3) после замены, кодировка файла 1 должна остаться такой же, как было до замены

То есть, если кодировка файла 1 до замены: 866 (OEM - русская), то после замены кодировка файла 1 должна остаться: 866 (OEM - русская)

Хочется получить универсальное решение: любое текстовое расширение файла (ini, txt, cfg, inf или другое) + любая кодировка файла (1251, 866, 1250 или другая)

Если универсальности не получиться, напишите мне, пожалуйста, я напишу Вам определенную кодировку файла и определенное текстовое расширение файла.

На примере файла 1
Было
Скрытый текст
Код: Выделить весь код
DialogType=1
DockAutoload=1
AltLineFill=28
SaveRelative=1
SaveOnExitEnable=1
SaveSessions=1
WindowRect=52010000270100005C0200008A010000
ModalDialogEnable=0
AltLineFill=398
SaveData=2039
Стало
Скрытый текст
Код: Выделить весь код
DialogType=1
DockAutoload=1
AltLineFill=0
SaveRelative=1
SaveOnExitEnable=1
SaveSessions=1
WindowRect=52010000270100005C0200008A010000
ModalDialogEnable=0
AltLineFill=0
SaveData=2039

Спасибо.

Последний раз редактировалось SharkyEXE, 27-02-2015 в 10:53.


Отправлено: 10:45, 27-02-2015 | #6


Ветеран


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

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


SharkyEXE, Примерно так, без учета кодировки:
Код: Выделить весь код
@echo off
setlocal

if "%~1"=="" (

    echo ERROR: No file to edit, run '%~nx0 file.ext' & exit /b
    
)

for /f "tokens=*" %%i in ('type %1') do call:1 "%%i"
move tmp.txt %1
goto:eof

:1

1>nul 2>&1 set "%~1"
1>>tmp.txt (

    if defined AltLineFill (echo AltLineFill=0) else (echo %~1)
    
)

set "AltLineFill="

Последний раз редактировалось Foreigner, 27-02-2015 в 11:52.

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

Отправлено: 11:42, 27-02-2015 | #7


Ветеран


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

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


Foreigner
Пожалуйста, если у Вас есть время, возможность, желание - сделайте Ваш код, чтобы он работал так:
1) создается пустой файл C:\1.cmd
2) в пустой файл C:\1.cmd вставляется Ваш код
3) внутри файла C:\1.cmd указываю путь для изменяемого файла C:\Program Files\AkelPadmax_port\1.txt
4) содержимое файла C:\Program Files\AkelPadmax_port\1.txt до
Скрытый текст
Код: Выделить весь код
DialogType=1
DockAutoload=1
AltLineFill=28
SaveRelative=1
SaveOnExitEnable=1
SaveSessions=1
WindowRect=52010000270100005C0200008A010000
ModalDialogEnable=0
AltLineFill=398
SaveData=2039
5) запускаю файл C:\1.cmd
5) содержимое файла C:\Program Files\AkelPadmax_port\1.txt после
Скрытый текст
Код: Выделить весь код
DialogType=1
DockAutoload=1
AltLineFill=0
SaveRelative=1
SaveOnExitEnable=1
SaveSessions=1
WindowRect=52010000270100005C0200008A010000
ModalDialogEnable=0
AltLineFill=0
SaveData=2039

Последний раз редактировалось SharkyEXE, 27-02-2015 в 16:03.


Отправлено: 15:56, 27-02-2015 | #8


Ветеран


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

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


Цитата SharkyEXE:
4) запустил файл 1.cmd »
4) Запустил файл 1.cmd 1
Ничего если я немного исправил 4 пункт?
Еще можно так:
4) Перетащил файл 1 на файл 1.cmd
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:56, 27-02-2015 | #9


Ветеран


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

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


Foreigner
Удалил то сообщение, Ваш код полностью рабочий
Пожалуйста, прочтите моё сообщение
Спасибо.

Отправлено: 16:00, 27-02-2015 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Замена текста в txt Starter1 Скриптовые языки администрирования Windows 17 04-08-2022 18:26
CMD/BAT - Замена строки в txt файле Сергей_Першин@vk Скриптовые языки администрирования Windows 0 07-06-2012 14:56
CMD/BAT - Замена и добавление числа в txt файле Tsok Скриптовые языки администрирования Windows 0 17-10-2011 17:22
CMD/BAT - Сравнение и замена в файлах .txt Deep2007 Скриптовые языки администрирования Windows 4 19-11-2010 19:08
нужно переделать файл doc в файл txt гала Тест-форум 1 15-01-2010 18:53




 
Переход