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

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

Ответить
Настройки темы
CMD/BAT - [решено] Чтение определённых строк из файла
4zz 4zz вне форума

Пользователь


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

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


Изменения
Автор: 4zz
Дата: 25-03-2013
Уважаемые знатоки!
Помогите решить задачу:
Есть файл config.js имеющий определенную структуру
Код: Выделить весь код
pn=1;
prog[pn]=['Visual C++ 05-08-10-12 x86/x64'];
uid[pn]=['MSVISUALC'];
dflt[pn]=['yes'];
forc[pn]=['no'];
bit64[pn]=['no'];
cat[pn]=['Системные'];
pfro[pn]=['no'];
cmds[pn]=['"%wpipath%\\Install\\SYSTEM\\VisualC_Hyb.exe"'];
desc[pn]=['Пакет Microsoft Visual C++ Redistributable Package устанавливает компоненты среды выполнения библиотек Visual C++, необходимых для запуска приложений, разработанных с помощью Visual C++, на компьютере без установленной среды Visual C++. В данной сборке (Hybrid), самые последние, официальные 32-х битные и 64-х битные версии Microsoft Visual C++ 2005-2008-2010-2012 Redistributable Package. (Установка Visual C++ 2012 будет происходить, только на операционных системах начиная с Windows Vista SP 2 и выше)'];
picf[pn]=['"%wpipath%\\Graphics\\Logos\\MSVC2010.png"'];
picw[pn]=['192'];
pich[pn]=['100'];
textl[pn]=['Bottom'];
pn++;
нужен файл который бы перенес название всех программ (название после prog[pn]= ) в отдельный txt файл
Пробовал так:
@echo off
FindStr /BRC:"prog[pn]=" config.js >2.txt

не получается -файл пустой
сохранял config в txt - тоже не получается

Config пример в архиве

Спасибо!

Отправлено: 14:41, 23-03-2013

 
4zz 4zz вне форума Автор темы

Пользователь


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

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


Цитата megaloman:
Ваш пример не скачивается (может быть, Вы пытались сохранить файл .js, переименуйте его в .txt).
Мне непонятна структура.
Объясните, prog[pn]=...... обязательно начинается с новой строки или сидит где-то в середине?
В одной строке может быть несколько ключевых слов (грубо, символ ; может повторяться несколько раз в одной строке)?
Должна ли подстрока, например, prog[pn]=['Maxthon 3.5.2.1000']; в файле располагаться в одной строке, или начало может быть на одной строке, а окончание на другой? »
Начинаются все названия с новых строк (файл в приложении выше)
Не повторяется в одной строке.
В файле переноса на другие строки нет - видимо на одной строке,а заканчивается ";"
сохранение в txt не помогло...

Отправлено: 16:17, 24-03-2013 | #2



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

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


Ветеран


Contributor


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

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


Код: Выделить весь код
@Echo Off

Set From=D:\Delete\config.js
Set To=D:\Delete\config.prog

Set Key1=prog[pn]

ChCp 1251 >nul
SetLocal EnableExtensions EnableDelayedExpansion

If Exist "%To%" Del "%To%">nul

FOR /F "usebackq delims=" %%s IN (`Type "%From%"`) DO (
	Set ss=%%s
	Set ss=!ss:%Key1%=!
	If /I Not %%s==!ss! (
		Set ss=!ss:*['=!
		>>"%To%" Echo !ss:'];=!
	)
)
Меняя значение ключевого слова в переменной Key1, можно выдернуть в выходной файл все значения любого параметра. В качестве тестового примера использовал следующий текст (надеюсь условие задачи понял правильно)
читать дальше »
Код: Выделить весь код
prog[pn]=['Maxthon 3.5.2.1000'];
uid[pn]=['MAXTHON3'];
dflt[pn]=['no'];
forc[pn]=['no'];
bit64[pn]=['no'];
cat[pn]=['Браузеры'];
pfro[pn]=['no'];
cmds[pn]=['"%wpipath%\\Install\\BROWSER\\Maxthon3.exe" -y -gm2 -fm0'];
desc[pn]=['Maxthon 3 - браузер, который построен на движке WebKit, и позволяет переключаться на движок IE для большей совместимости. Перезапуск браузера при этом не требуется - одновременно могут быть открыты несколько вкладок с использованием как одного, так и другого движка.'];
picf[pn]=['"%wpipath%\\Graphics\\Logos\\Maxthon3.png"'];
picw[pn]=['100'];
pich[pn]=['101'];
textl[pn]=['Bottom'];
pn++;
prog[pn]=['Maxthon 3.5.2.1001'];
uid[pn]=['MAXTHON3'];
dflt[pn]=['no'];
forc[pn]=['no'];
bit64[pn]=['no'];
cat[pn]=['Браузеры'];
pfro[pn]=['no'];
cmds[pn]=['"%wpipath%\\Install\\BROWSER\\Maxthon3.exe" -y -gm2 -fm0'];
desc[pn]=['Maxthon 3 - браузер, который построен на движке WebKit, и позволяет переключаться на движок IE для большей совместимости. Перезапуск браузера при этом не требуется - одновременно могут быть открыты несколько вкладок с использованием как одного, так и другого движка.'];
picf[pn]=['"%wpipath%\\Graphics\\Logos\\Maxthon3.png"'];
picw[pn]=['100'];
pich[pn]=['101'];
textl[pn]=['Bottom'];
pn++;
prog[pn]=['Maxthon 3.5.2.1002'];
uid[pn]=['MAXTHON3'];
dflt[pn]=['no'];
forc[pn]=['no'];
bit64[pn]=['no'];
cat[pn]=['Браузеры'];
pfro[pn]=['no'];
cmds[pn]=['"%wpipath%\\Install\\BROWSER\\Maxthon3.exe" -y -gm2 -fm0'];
desc[pn]=['Maxthon 3 - браузер, который построен на движке WebKit, и позволяет переключаться на движок IE для большей совместимости. Перезапуск браузера при этом не требуется - одновременно могут быть открыты несколько вкладок с использованием как одного, так и другого движка.'];
picf[pn]=['"%wpipath%\\Graphics\\Logos\\Maxthon3.png"'];
picw[pn]=['100'];
pich[pn]=['101'];
textl[pn]=['Bottom'];
pn++;

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 25-03-2013 в 13:25. Причина: Исправил ("%From%") на (`Type "%From%"`) по предложению gora для возможной работы с приведенным файлом

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:07, 24-03-2013 | #3

4zz 4zz вне форума Автор темы

Пользователь


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

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


Ничего не получается-
1.Сохранил вышеуказанный код в bat файл
2.положил его вместе с файлом config.js по адресу D:\Delete\
3.Запускаю батник, ничего не меняется, пишу в нем pause -возвращает пустое окно с предложением нажать любую клавишу

Отправлено: 00:56, 25-03-2013 | #4


Аватара для gora

Ушёл из жизни


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

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


Цитата 4zz:
Начинаются все названия с новых строк (файл в приложении выше) »
1 Нет там ни чего. Заархивируйте файл в любом ахиваторе в один из поддерживаемых форумом форматов:
Цитата:
Вложить файлы
Разрешенные типы файлов: 7z bmp bz2 dmp doc docx gif gz jpe jpeg jpg pdf png psd rar txt xls xlsx xml zip
И прикрепите архив к первому сообщению. Прикрепить скрипт Вам не удастся, ибо этот формат не поддерживается форумом для прикрепления файлов.
2 Код оформляйте в тегах [code] - значок # на панели "Быстрого ответа"
3 Судя по тексту в первом посте и отсутствию у Вас положительных результатов от предложенных Вам здесь решений, у Вас что-то не в порядке с символами окончания строк в Вашем исходном файле. Посему нужен Ваш исходный файл.
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:02, 25-03-2013 | #5

4zz 4zz вне форума Автор темы

Пользователь


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

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


megaloman, [
Не работает
gora,
Исправил первое сообщение

Отправлено: 12:33, 25-03-2013 | #6

4zz 4zz вне форума Автор темы

Пользователь


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

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


gora,
В первом сообщении нажимаю на "Config пример в архиве" - начинается загрузка архива...

Цитата gora:
Не получается прикрепить, выложите архив на файлообъменник и дайте здесь ссылку на него. »
Ссылка

Отправлено: 12:42, 25-03-2013 | #7


Аватара для gora

Ушёл из жизни


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

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


4zz, кодировка файла у Вас UTF-16LE. В таких случаях кодировку нужно сообщать в первом посте.

Поправьте одну строку в коде из поста 3:
Код: Выделить весь код
...
FOR /F "usebackq delims=" %%s IN (`Type "%From%"`) DO (
...
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:06, 25-03-2013 | #8

4zz 4zz вне форума Автор темы

Пользователь


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

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


gora, megaloman,
СПАСИБО ОГРОМНОЕ!!!
все работает!!!
Получилось так (добавил, еще, строчку с путем установки):
Код: Выделить весь код
@Echo Off

Set From=D:\Delete\config.js
Set To=D:\Delete\config.prog

Set Key1=prog[pn]
Set Key2=cmds[pn]
ChCp 1251 >nul
SetLocal EnableExtensions EnableDelayedExpansion

If Exist "%To%" Del "%To%">nul

FOR /F "usebackq delims=" %%s IN (`Type "%From%"`) DO (
	Set ss=%%s
	Set ss=!ss:%Key1%=!
	Set ss=!ss:%Key2%=!
	If /I Not %%s==!ss! (
		Set ss=!ss:*['=!
		>>"%To%" Echo !ss:'];=!
	)
)

Отправлено: 13:54, 25-03-2013 | #9

4zz 4zz вне форума Автор темы

Пользователь


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

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


Цитата megaloman:
*4zz*, Мне кажется ваш код ошибочен. объясните, что Вы хотите получить. »
Это файл настроек программы установки приложений WPI,
Этим кодом получаем список установленных программ, для контроля

Отправлено: 22:26, 25-03-2013 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - [решено] Замена строк из файла строками из файла в файле bcubbs@fb Скриптовые языки администрирования Windows 6 24-01-2013 17:22
[решено] Чтение строк из лога и запись их в файл support23 AutoIt 5 18-10-2012 12:04
VBA - Visual Basic Чтение строк из txt Startup Программирование и базы данных 2 23-09-2012 17:48
CMD/BAT - [решено] помогите дописать команду - чтение строк из файла jannaly Скриптовые языки администрирования Windows 4 02-06-2012 17:38
C/C++ - Чтение из бинарного файла формата GRD Violetta_ Программирование и базы данных 3 20-05-2012 19:45




 
Переход