Как через cmd заменить n-ую строку в текстовом файле?
Здравствуйте. Сабж. Надо заменить 13ю строку в файле на заранее известную. Пишу так
for /f "skip=12" in (settings.ini) do (echo dparm=BIND=0,lck='ru',APP='GPS',HST='%COMPUTERNAME%')
По задумке должно пропустить 12 строк с начала файла и заменить на то, что указано в скобках. По факту - ноль реакции. Возможно, надо еще прервать цикл, т.к. замена производится один раз, но не уверен, это предположение, раньше с смд дел не имел.
В общем, полазил еще по форумам и сделал. Изначально задача была заменить в файле кусок именем компьютера, на котором запущен файл. Но я намудрил, решил заменить целую строчку, поэтому долго возился. Все оказалось прозаичнее. В примере ниже pc-name - это кусок, подлежащий замене на имя компа, получаемое через %computername%.
@echo off
setlocal enabledelayedexpansion
Set infile=settings.ini
Set find=pc-name
Set replace=%COMPUTERNAME%
@echo off
setlocal enabledelayedexpansion
set COUNT=0
for /F "tokens=* delims=, eol=#" %%n in (!infile!) do (
set LINE=%%n
set TMPR=!LINE:%find%=%replace%!
Echo !TMPR!>>TMP.TXT
)
move TMP.TXT %infile%
Да, контент в 12 строке известен. Нечто вроде password=112.
PowerShell использовать нельзя, нужно сделать одним .cmd файлом, по которому два раза человек кликает и все делается)
При первом запуске моматюкается на то что мол низя скрипты запускать, мир в опасносте, но на команду "Set-ExecutionPolicy remotesigned"(в PS консоли запущенной от админа), соглашается на то что не так всё плохо :)