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

Аватара пользователя
angel_lyucifer

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

Сообщение angel_lyucifer »

Привет всем!

У меня есть только один файл 1.txt он содержит много строчек английских и русских, среди них есть одна строка #sound_on_vlp только её нужно заменить на #sound_off_vlp при запуске батника. А другие строки оставались неизменными и в таком же порядке...

Я нашёл на вашем форуме похожую тему, но в той теме приведённый пример не подходит.

CMD/BAT - [решено] Поиск строки в файле и замена её на набор из случайных чисел и букв


Пожалуйста помогите, создать такой батник?
Аватара пользователя
Foreigner

Re: CMD/BAT - [решено] Замена строчек в файл txt

Сообщение Foreigner »

SharkyEXE, Не совсем понятно зачем такая мудреная схема. Возникает несколько вопросов:



1. Где должны быть 1.cmd и 1.txt

2. Зачем копировать батник если его можно запустить и получить результат

3. Откуда берется 1.txt

4. Откуда запускается батник, который должен все это сделать



Обрисуйте вашу задачу в целом.
Аватара пользователя
angel_lyucifer

Re: CMD/BAT - [решено] Замена строчек в файл txt

Сообщение angel_lyucifer »

Цитата sov44:



set filename=old.txt set $filename=new.txt
CMD/BAT - [решено] Замена строчек в файл txt




У меня есть только один файл txt.
Аватара пользователя
sov44

Re: CMD/BAT - [решено] Замена строчек в файл txt

Сообщение sov44 »

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
Аватара пользователя
sov44

Re: CMD/BAT - [решено] Замена строчек в файл txt

Сообщение sov44 »

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

Re: CMD/BAT - [решено] Замена строчек в файл txt

Сообщение SharkyEXE »

2 all

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



Пожалуйста, помогите мне.

1) есть файл 1

2) пример файла 1



Скрытый текст

[spoiler]Код:
[/spoiler]

Код: Выделить всё

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

Было



Скрытый текст

[spoiler]Код:
[/spoiler]

Код: Выделить всё

DialogType=1
DockAutoload=1
AltLineFill=28
SaveRelative=1
SaveOnExitEnable=1
SaveSessions=1
WindowRect=52010000270100005C0200008A010000
ModalDialogEnable=0
AltLineFill=398
SaveData=2039





Стало



Скрытый текст

[spoiler]Код:
[/spoiler]

Код: Выделить всё

DialogType=1
DockAutoload=1
AltLineFill=0
SaveRelative=1
SaveOnExitEnable=1
SaveSessions=1
WindowRect=52010000270100005C0200008A010000
ModalDialogEnable=0
AltLineFill=0
SaveData=2039







Спасибо.
Аватара пользователя
Foreigner

Re: CMD/BAT - [решено] Замена строчек в файл txt

Сообщение Foreigner »

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="
Аватара пользователя
SharkyEXE

Re: CMD/BAT - [решено] Замена строчек в файл txt

Сообщение SharkyEXE »

Цитата SharkyEXE:



4) запустил файл 1.cmd
»




4) Запустил файл 1.cmd 1

Ничего если я немного исправил 4 пункт?

Еще можно так:

4) Перетащил файл 1 на файл 1.cmd
Аватара пользователя
Foreigner

Re: CMD/BAT - [решено] Замена строчек в файл txt

Сообщение Foreigner »

Foreigner

Удалил то сообщение, Ваш код полностью рабочий

Пожалуйста, прочтите моё
CMD/BAT - [решено] Замена строчек в файл txt


Спасибо.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»