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

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

Ответить
Настройки темы
CMD/BAT - Изменить txt файл с помощью .bat

Старожил


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

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


Искал в инете, но не нашел.Нужно в середине .txt файла изменить текст с помощью .bat.Подскажите пожалуйста код?

Отправлено: 20:37, 28-03-2012

 

Ветеран


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

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


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

for /f "tokens=*" %%i in (' dir /b /s /a-d C:\blabla.txt ') do set "file=%%i"

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

:replace
set "line=%~1"
1>>blabla.tmp echo %line:old old old=new new new%
Но это не лучший способ для обработки текстовых файлов, имхо.

Отправлено: 09:36, 31-03-2012 | #11



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

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


Старожил


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

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


какой текст он ищет и какой изменяет????мне нужно config и replace и почему .tmp???

Отправлено: 09:57, 31-03-2012 | #12


Ветеран


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

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


Цитата drkrol:
какой текст он ищет и какой изменяет???? »
"old old old" на "new new new"

Отправлено: 10:24, 31-03-2012 | #13


Старожил


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

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


1)
Было так:
123
123
old old old
123
Становится так:
123123new new new123

2)Появляется замок на blabla.txt...

Отправлено: 11:16, 31-03-2012 | #14


Ветеран


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

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


drkrol,
У меня все нормально.
Цитата:
2)Появляется замок на blabla.txt...
wtf? Это все не проблемы батника. Ищите что у вас не так.

Отправлено: 11:21, 31-03-2012 | #15


Старожил


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

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


Foreigner, А что делать если нужно MaxShLimit=0 поменять на MaxShLimit=500?
0 на 500 менять нельзя.Там очень много нулей....

Отправлено: 11:32, 31-03-2012 | #16


Ветеран


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

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


Цитата drkrol:
А что делать если нужно MaxShLimit=0 поменять на MaxShLimit=500? »
Сразу бы написал, что тебе надо исправлять ini-файл. Для этого данное решение совсем не подходит, попробуй исправить:
Код: Выделить весь код
.....

:replace

1>nul 2>&1 set %1
if "%MaxShLimit%" equ "500" (1>>blabla.tmp echo MaxShLimit=0) else (1>>blabla.tmp echo %~1)

for /f "tokens=1 delims==" %%i in (%1) do 1>nul 2>&1 set "%%i="

Отправлено: 11:58, 31-03-2012 | #17


Ветеран


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

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


Цитата drkrol:
Это так принципиально? »
Принципиально, коллега.

читать дальше »
1. Явно видны границы кода, где начало, где конец.
2. Код сохраняется «как есть» (есть некоторые исключения, но это детали).
3. Текст в тэге «code» оформляется моноширинным шрифтом (а, при указании языка — и с раскраской); в теле же поста текст оформлен пропорциональным шрифтом.

Отправлено: 13:58, 31-03-2012 | #18


Старожил


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

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


Подскажите, как такое реализовать?

Есть текстовый файл file.bat, в котором одна или более строк.
В конечном итоге имя исходного файла не должно меняться.

Среди строк файла file.bat есть вот такая строка:
Код: Выделить весь код
copy %1 \\admincheg\share
а вот другое ничего меняться не должно, т.к. на разных ПК разные файлы (с разным содержимым).

Именно и только %1 нужно поменять на новое значение.
Вот новое значение
Код: Выделить весь код
%UserProfile%\Downloads\txt.txt
В итоге должно получиться:
Код: Выделить весь код
copy %UserProfile%\Downloads\txt.txt \\admincheg\share
Код: Выделить весь код
Set infile=file.bat
Set find="%1"
Set replace=%UserProfile%\Downloads\txt.txt

setlocal enabledelayedexpansion 
for /F "tokens=* delims=," %%n in (!infile!) do ( 
set LINE=%%n 
set LINE=!LINE:%find%=%replace%! 
@echo !LINE!>>file.bat
)
endlocal
в итоге получаю в файле ещё одну строку "copy %1 \\admincheg\share" т.е. теперь уже 2 одинаковые строки

Отправлено: 17:39, 06-12-2017 | #19


Ветеран


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

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


Akella2007, ничего в пакетном файле менять не нужно, просто передавайте ему потребное аргументом пакетного файла, именно оно и будет подставлено в момент выполнения вместо формального параметра %1.

Код: Выделить весь код
 file.bat "%UserProfile%\Downloads\txt.txt"

Отправлено: 18:00, 06-12-2017 | #20



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Запись в файл hosts с помощью bat-файла SibAgent Скриптовые языки администрирования Windows 20 29-07-2015 22:12
CMD/BAT - [решено] как отправить файл с помощью BAT на mail exekill Скриптовые языки администрирования Windows 1 08-03-2012 10:04
CMD/BAT - [решено] найти путь к файлу/папке с помощью батника и занести результат в txt файл sharky lions Скриптовые языки администрирования Windows 4 17-04-2011 19:57
CMD/BAT - [решено] запуск на удаленной машине bat-файл с помощью psexec ejik_off Скриптовые языки администрирования Windows 10 16-09-2010 19:31
CMD/BAT - [решено] Как с помощью bat-ника записать названия папок в текстовый файл? Nun-Nun Скриптовые языки администрирования Windows 9 23-02-2010 20:15




 
Переход