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

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

Ответить
Настройки темы
CMD/BAT - [решено] Поиск и копирование текста из одного ini-файла в другой с помощью bat-ника

Аватара для Nun-Nun

Ветеран


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


Конфигурация

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


Изменения
Автор: Nun-Nun
Дата: 11-08-2016
Требуется батник для следующей задачи:
в ini-файле есть строка, состоящая из двух частей. Первая часть строки состоит из всегда одинакового текста
Код: Выделить весь код
	Id	= VLTE-
за которым следует вторая часть строки, содержащая периодически меняющийся текст, состоящий из латиницы, пробелов, знаков подчёркивания, точек и тире, т.е. минусов. Требуется с помощью батника скопировать текст, начиная с
Код: Выделить весь код
VLTE-
, и до конца строки в другой ini-файл. Содержание этого второго ini-файла будет состоять из одной строки, содержащей скопированный текст, заключённый в кавычки, за которым будет следовать текст (без кавычек, кавычки привожу, чтобы показать пробелы):
Код: Выделить весь код
"   --->   "
и текущая дата.

В итоговом ini-файле должно получиться что-то типа такого: "VLTE-набор букв латиницей и перечисленных выше символов"три пробела--->три пробела11.08.2016

P.S. Если второй ini-файл уже существует, нужно его перезаписать.

-------
Свобода не означает вседозволенность.


Отправлено: 18:49, 11-08-2016

 

Ветеран


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

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


Если в файле строка вида
Код: Выделить весь код
Id=VLTE-
то можно так:
Код: Выделить весь код
@echo off
set "f_in=file1.ini"
set "f_out=file2.ini"
<"%f_in%">"%f_out%" (for /f "delims=" %%a in ('find "Id"') do @set "%%a"& cmd/v/c echo "!Id!"   ---^^^>   %date%)
exit
если именно так как указано, то так:
Код: Выделить весь код
@echo off
set "f_in=file1.ini"
set "f_out=file2.ini"
<"%f_in%">"%f_out%" (for /f "tokens=2* delims==" %%a in ('find "Id"') do @set "s=%%a%%b"& cmd/v/c echo "!s:~1!"   ---^^^>   %date%)
exit
Цитата Nun-Nun:
Если второй ini-файл уже существует, нужно его перезаписать. »
Конечный файл так или иначе перезапишется или создасться.
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:13, 11-08-2016 | #2



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

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


Аватара для Nun-Nun

Ветеран


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

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


Цитата alpap:
если именно так как указано, то так: »
Да, лучше именно так, как указано. Попробовал второй вариант - работает, но только если оба ini-файла находятся рядом с bat-файлом. На самом же деле второй ini-файл должен располагаться в находящейся рядом с bat-ником папке (извиняюсь, забыл об этом предупредить). Пробовал добавить путь, но с ним скрипт не работает (абсолютные пути в данном случае не подходят, т.к. на разных компах они сильно отличаются, а компов много). Можно ли это как-то поправить?
И ещё есть один вопрос: насколько вижу, скрипт выполняет поиск нужного текста по буквосочетанию "Id". Но "Id" может встречаться в ini-файле не только в искомой строке, но и в других строках. Это проблем не вызовет, на корректность поиска не повлияет?

-------
Свобода не означает вседозволенность.


Отправлено: 23:55, 11-08-2016 | #3


Ветеран


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

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


Цитата Nun-Nun:
Это проблем не вызовет, на корректность поиска не повлияет? »
с учетом
Цитата Nun-Nun:
Первая часть строки состоит из всегда одинакового текста »
у меня выбора -то и нет, могу разве вместо ...find "Id"..., предложить:
Код: Выделить весь код
...more^|findstr/r /c:"^Id"...
т.е. поиск строки, начинающейся с Id

Цитата Nun-Nun:
(абсолютные пути в данном случае не подходят, т.к. на разных компах они сильно отличаются, а компов много). Можно ли это как-то поправить? »
надо несколько вариантов путей, тогда мне понятней будет чтобы поправить.

Отправлено: 03:05, 12-08-2016 | #4


Аватара для Nun-Nun

Ветеран


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

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


Цитата alpap:
могу разве вместо ...find "Id"..., предложить: »
Неизменная часть строки, по которой целесообразно вести поиск это приведённый у меня вариант (табуляция, Id, табуляция, знак равно, пробел, VLTE-):
Код: Выделить весь код
	Id	= VLTE-
т.е. в поиске этот кусок целесообразно использовать целиком, т.к. он не повторяется, в отличие от двухбуквенного "Id", который может присутствовать и в других местах, кроме искомой строки.
Что касается путей, то выглядеть это будет так: папка, в которой лежат bat-файл и ini-файл с исходным текстом \ папка, в которой должен располагаться итоговый ini-файл, т.е. примерно так:
Код: Выделить весь код
folder1\file.bat
folder1\file-in.ini
folder1\folder2\file-out.ini

-------
Свобода не означает вседозволенность.


Отправлено: 11:56, 12-08-2016 | #5


Ветеран


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

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


Nun-Nun,
Наконец что-то прояснилось:
Код: Выделить весь код
@echo off
set "f_in=file-in.ini"
set "f_out=%~dp0folder2\file-out.ini"
<"%f_in%">"%f_out%" (for /f "tokens=3*" %%a in ('more^|findstr/rc:"^	Id	= VLTE-\>"') do @echo "%%a%%b"   ---^^^>   %date%)
exit
.

Отправлено: 18:35, 12-08-2016 | #6


Аватара для Nun-Nun

Ветеран


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

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


alpap,

Попробовал. Не работает. В папке folder2 появляется выходной ini-файл, но в нём ничего нет, он пустой.

-------
Свобода не означает вседозволенность.


Отправлено: 20:18, 12-08-2016 | #7


Ветеран


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

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


Цитата Nun-Nun:
Не работает »
Точно, стоит один раз не проверить и приехали, исправил и проверил:
Код: Выделить весь код
@echo off
set "f_in=file-in.ini"
set "f_out=%~dp0folder2\file-out.ini"
<"%f_in%">"%f_out%" (for /f "tokens=3*" %%a in ('more^|findstr/rc:"^[ ]*Id[ ]*=[ ]VLTE-"') do @echo "%%a%%b"   ---^^^>   %date%)
exit
.

Отправлено: 20:59, 12-08-2016 | #8


Аватара для Nun-Nun

Ветеран


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

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


Работает, но некорректно. Вот что оказывается записанным в итоговый ini-файл:
Код: Выделить весь код
"VLTE-H7LMET. L.M07-635"   ---^>   12.08.2016
, а должно быть:
Код: Выделить весь код
"VLTE-H7L MET. L.M07-635"   --->   12.08.2016
Т.е. не хватает одного пробела и присутствует символ ^

-------
Свобода не означает вседозволенность.


Отправлено: 21:24, 12-08-2016 | #9


Ветеран


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

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


Угу? Когда cmd/v убрал забыл изменить:
Код: Выделить весь код
@echo off
set "f_in=file-in.ini"
set "f_out=%~dp0folder2\file-out.ini"
<"%f_in%">"%f_out%" (for /f "tokens=3*" %%a in ('more^|findstr/rc:"^[ ]*Id[ ]*=[ ]VLTE-"') do @echo "%%a %%b"   ---^>   %date%)
exit
Так правильно.
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:17, 12-08-2016 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - копирование из одного каталога в другой bat файл с помощью параметров terror572 Скриптовые языки администрирования Windows 0 18-03-2014 20:16
CMD/BAT - Поиск с помощью Bat ника shiroq Скриптовые языки администрирования Windows 11 10-10-2013 07:47
2007 - [решено] Поиск и перенос текста из одного документа в другой... Voron-orel Microsoft Office (Word, Excel, Outlook и т.д.) 3 20-08-2013 20:03
VBS/WSH/JS - [решено] Поиск и копирование текста из файла KaKTuZ49 Скриптовые языки администрирования Windows 2 03-11-2011 13:38
CMD/BAT - С помощью bat-ника найти и заменить текст в файле на текст из другого файла Nun-Nun Скриптовые языки администрирования Windows 1 08-03-2011 15:25




 
Переход