Показать полную графическую версию : Изменить txt файл с помощью .bat
Искал в инете, но не нашел.Нужно в середине .txt файла изменить текст с помощью .bat.Подскажите пожалуйста код?
вот тут код, заменяет в любом месте файла
http://forum.oszone.net/thread-231201.html
А можно что бы еще и .txt файл искал?
Мне нужно так что бы батник нашел .txt файл а потом изменил его.Такое возможно?
drkrol, http://forum.oszone.net/thread-183864.html
1.А можно что бы он изменял а не создавал новый файлы с текстом
2.Как мне сопоставить поиск с изменением?
1.А можно что бы он изменял а не создавал новый файлы с текстом »
drkrol, используйте внешние утилиты. Воспользовавшись поиском по разделу, Вы найдёте как их наименования, так и примеры использования.
Как мне объединить эти 2 кода?
DIR /b/s/a-d C:\blablabla.txt
Set infile=blablabla.txt
Set find=config
Set replace=Replace
setlocal enabledelayedexpansion
for /F "tokens=* delims=," %%n in (!infile!) do (
set LINE=%%n
set LINE=!LINE:%find%=%replace%!
@echo !LINE!>>2.txt
)
endlocal
del blablabla.txt
ren 2.txt blablabla.txt
drkrol, не вижу кода в приведённом Вами тексте (подсказка: код на форуме оформляется тэгом [code] (http://forum.oszone.net/misc.php?do=bbcode#code)).
Это так принципиально?Хочу скзать.Когда я первый раз в тег CODE заводил он у меня так же как и тогда в строчку был...
Вот я изменил
Foreigner
31-03-2012, 09:36
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%
Но это не лучший способ для обработки текстовых файлов, имхо.
какой текст он ищет и какой изменяет????мне нужно config и replace и почему .tmp???
Foreigner
31-03-2012, 10:24
какой текст он ищет и какой изменяет???? »
"old old old" на "new new new"
1)
Было так:
123
123
old old old
123
Становится так:
123123new new new123
2)Появляется замок на blabla.txt...
Foreigner
31-03-2012, 11:21
drkrol,
У меня все нормально.
2)Появляется замок на blabla.txt...
wtf? Это все не проблемы батника. Ищите что у вас не так.
Foreigner, А что делать если нужно MaxShLimit=0 поменять на MaxShLimit=500?
0 на 500 менять нельзя.Там очень много нулей....
Foreigner
31-03-2012, 11:58
А что делать если нужно 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="
Это так принципиально? »
Принципиально, коллега.
1. Явно видны границы кода, где начало, где конец.
2. Код сохраняется «как есть» (есть некоторые исключения, но это детали).
3. Текст в тэге «code» оформляется моноширинным шрифтом (а, при указании языка — и с раскраской); в теле же поста текст оформлен пропорциональным шрифтом.
Akella2007
06-12-2017, 17:39
Подскажите, как такое реализовать?
Есть текстовый файл 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 одинаковые строки
Akella2007, ничего в пакетном файле менять не нужно, просто передавайте ему потребное аргументом пакетного файла, именно оно и будет подставлено в момент выполнения вместо формального параметра %1.
file.bat "%UserProfile%\Downloads\txt.txt"
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.