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

Компьютерный форум 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

 

Ветеран


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

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


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

1. Где должны быть 1.cmd и 1.txt
2. Зачем копировать батник если его можно запустить и получить результат
3. Откуда берется 1.txt
4. Откуда запускается батник, который должен все это сделать

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

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



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

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


Ветеран


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

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


Foreigner

1.cmd - в этом файле один раз прописывается код
Я не имею желания каждый раз прописывать Ваши строки в командной строке для изменения файла

1.txt - это изменяемый файл
Путь к файлу 1.txt указывается внутри файла 1.cmd

Я запускаю файл 1.cmd и получаю измененный файл 1.txt

Итого, если проще, должно быть так:

1) в Вашем коде указывается путь полный путь C:\Program Files\AkelPadmax_port\1.txt
Путь C:\Program Files\AkelPadmax_port\1.txt - это файл, в котором будем делать замену строк
2) содержимое файла 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
3) запускается Ваш код
4) содержимое файла 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:30.


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


Ветеран


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

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


Цитата SharkyEXE:
1.cmd - в этом файле один раз прописывается код
Я не имею желания каждый раз прописывать Ваши строки в командной строке для изменения файла »
Ну так пропишите в 1.cmd путь к 1.txt Он же, путь, постоянный?
Код: Выделить весь код
@echo off
setlocal

for /f %%i in ('type "C:\Path\To\1.txt"') do call:1 "%%i"
move tmp.txt "C:\Path\To\1.txt"
goto:eof

:1
...

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


Ветеран


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

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


Foreigner
А нельзя, пожалуйста, без call сделать, типа такого:
Скрытый текст
Код: Выделить весь код
@echo off
setlocal

for /f %%i in ('type "C:\Path\To\1.txt"') do (

1>nul 2>&1 set "%~1"
1>>"C:\Path\To\tmp.txt" (

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

set "AltLineFill="
)

move "C:\Path\To\tmp.txt" "C:\Path\To\1.txt"

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


Ветеран


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

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


SharkyEXE, Можно:
Код: Выделить весь код
@echo off
setlocal

for /f "tokens=*" %%i in ('type "C:\Users\---\Desktop\1.txt"') do (

    1>nul set "%%~i"
    1>>tmp.txt (

        if defined AltLineFill (echo AltLineFill=0) else (echo %%i)
        set "AltLineFill="
    
))

move tmp.txt "C:\Users\---\Desktop\1.txt"
Это сообщение посчитали полезным следующие участники:

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


Ветеран


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

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


Foreigner
А можно, пожалуйста, сделать так, чтобы AltLineFill было с пробелом, вот так Alt Line Fill + добавить переменные
Типа такого, код не работает:
Скрытый текст
Код: Выделить весь код
@echo off

Set PathReplaceFile C:\Users\---\Desktop\1.txt
Set PathTmpFile C:\Users\---\Desktop\tmp.txt
Rem Заменяемая строка, после = любое содержимое
Set Input Alt Line Fill =
Rem На что меняем
Set Output Alt Line Fill=0

setlocal

for /f "tokens=*" %%i in ('type "%PathReplaceFile%"') do (

    1>nul set "%%~i"
    1>>"%PathTmpFile%" (

        if defined "%Input%" (echo "%Output%") else (echo %%i)
        {что тут писать не знаю}
    
))

move "%PathTmpFile%" "%PathReplaceFile%"

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


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


Ветеран


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

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


Код: Выделить весь код
@echo off
setlocal

for /f "tokens=*" %%i in ('type "C:\Path\To\1.txt"') do (

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

        1>nul 2>&1 set Alt Line Fill && (echo Alt Line Fill=0) || (echo %%i)
        set "Alt Line Fill="
    
))

move tmp.txt "C:\Path\To\1.txt"
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:12, 27-02-2015 | #17


Ветеран


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

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


Foreigner
А можно, пожалуйста, добавить переменные
Типа такого, код не работает:
Скрытый текст
Код: Выделить весь код
@echo off

Set PathReplaceFile = "C:\Users\---\Desktop\1.txt"
Set PathTmpFile = "C:\Users\---\Desktop\tmp.txt"
Rem Заменяемая строка
Set Input = "Alt Line Fill"
Rem На что меняем
Set Output = "Alt Line Fill=0"

setlocal

for /f "tokens=*" %%i in ('type "%PathReplaceFile%"') do (

    1>nul 2>&1 set "%%~i"
    1>>"%PathTmpFile%" (

        1>nul 2>&1 set "%Input%" && (echo "%Output%") || (echo %%i)
        set "%Input%="
    
))

move "%PathTmpFile%" "%PathReplaceFile%"

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


Отправлено: 17:22, 27-02-2015 | #18


Ветеран


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

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


SharkyEXE, Ставьте задачу полностью с самого начала, от этого зависит ответ:
Код: Выделить весь код
@echo off
setlocal

set "in=C:\Path\To\1.txt"
set "tochange=Alt Line Fill"
set "value=0"

for /f "tokens=1,2 delims==" %%i in ('type "%in%"') do (

    1>>tmp.txt (if /i "%%i"=="%tochange%" (echo %%i=%value%) else (echo %%i=%%j))

)

move tmp.txt "%in%"
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:38, 27-02-2015 | #19


Ветеран


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

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


Foreigner
Для Вашего примера не работает пустые строки в файле.

Если Ваш пример запустить для файла с таким содержимым
Скрытый текст
Код: Выделить весь код
[1213]
{пустая строка}
DialogType=1
DockAutoload=1
Alt Line Fill=28
SaveRelative=1
SaveOnExitEnable=1
SaveSessions=1
WindowRect=52010000270100005C0200008A010000
ModalDialogEnable=0
Alt Line Fill=398
SaveData=2039

[6498]
{пустая строка}
DialogType=1
DockAutoload=1
Alt Line Fill=28
SaveRelative=1
SaveOnExitEnable=1
SaveSessions=1
WindowRect=52010000270100005C0200008A010000
ModalDialogEnable=0
Alt Line Fill=398
SaveData=2039
{пустая строка}
{пустая строка}
то на выходе получаем такую бяку
Скрытый текст
Код: Выделить весь код
[1213]=
DialogType=1
DockAutoload=1
Alt Line Fill=0
SaveRelative=1
SaveOnExitEnable=1
SaveSessions=1
WindowRect=52010000270100005C0200008A010000
ModalDialogEnable=0
Alt Line Fill=0
SaveData=2039
[6498]=
DialogType=1
DockAutoload=1
Alt Line Fill=0
SaveRelative=1
SaveOnExitEnable=1
SaveSessions=1
WindowRect=52010000270100005C0200008A010000
ModalDialogEnable=0
Alt Line Fill=0
SaveData=2039
{пустая строка}

Отправлено: 13:42, 01-03-2015 | #20



Компьютерный форум 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




 
Переход