Пакетный файл для редактирования строки в INI-файле - PullRequest
4 голосов
/ 05 июля 2011

У меня есть ini-файл, который генерируется автоматически.

Его вторая строка всегда: Version = W.XX.Y.ZZ

Где W - номер основной версии, XX - вспомогательная версия., Y - это сборка, а ZZ - это ревизия.

Мне нужно открыть этот ini-файл и отредактировать эту строку, используя пакетный файл, чтобы номера сборки и ревизии в этой версии были удалены.Поэтому строка должна заканчиваться так: Version = W.XX

Старший номер всегда будет одним символом, а младший номер всегда будет двумя, поэтому вся строка имеет длину 14 символов (включая пробелы).

Я надеялся, что смогу получить строку, которая составляет LEFT 14 символов этой строки, и заменить эту строку этой строкой.

1 Ответ

6 голосов
/ 07 июля 2011

Синтаксис «LEFT», который вы запрашиваете, заключается в использовании расширения подстроки переменной: %var:~,14%

Следующий код будет выполнять «LEFT 14» в каждой строке, содержащей строку «Version»

setlocal enabledelayedexpansion
del output.ini
for /f "tokens=*" %%a in (input.ini) do (
  set var=%%a
  if not {!var!}=={!var:Version=!} set var=!var:~,14!
  echo.!var! >> output.ini
)
endlocal

Если есть другие строки со словом «Версия», вы также можете изменить цикл для использования счетчика.

setlocal enabledelayedexpansion
del output.ini
set counter=0
for /f "tokens=*" %%a in (input.ini) do (
  set var=%%a
  set /a counter=!counter!+1
  if !counter! EQU 2 set var=!var:~,14!
  echo.!var! >> output.ini
)
endlocal

Обратите внимание, что в обоих случаях вы можете иметьчтобы сделать больше работы, если ваш файл содержит специальные символы, такие как |, <или>

...