Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Чтение определённых строк из файла (http://forum.oszone.net/showthread.php?t=256939)

4zz 23-03-2013 14:41 2116888

Чтение определённых строк из файла
 
Уважаемые знатоки!
Помогите решить задачу:
Есть файл 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 пример в архиве

Спасибо!

4zz 24-03-2013 16:17 2117453

Цитата:

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

Начинаются все названия с новых строк (файл в приложении выше)
Не повторяется в одной строке.
В файле переноса на другие строки нет - видимо на одной строке,а заканчивается ";"
сохранение в txt не помогло...

megaloman 24-03-2013 19:07 2117587

Код:

@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++;


4zz 25-03-2013 00:56 2117820

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

gora 25-03-2013 12:02 2118004

Цитата:

Цитата 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 Судя по тексту в первом посте и отсутствию у Вас положительных результатов от предложенных Вам здесь решений, у Вас что-то не в порядке с символами окончания строк в Вашем исходном файле. Посему нужен Ваш исходный файл.

4zz 25-03-2013 12:33 2118024

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

4zz 25-03-2013 12:42 2118030

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

Цитата:

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

Ссылка

gora 25-03-2013 13:06 2118044

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

Поправьте одну строку в коде из поста 3:
Код:

...
FOR /F "usebackq delims=" %%s IN (`Type "%From%"`) DO (
...


4zz 25-03-2013 13:54 2118075

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:'];=!
        )
)

:)

4zz 25-03-2013 22:26 2118469

Цитата:

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

Это файл настроек программы установки приложений WPI,
Этим кодом получаем список установленных программ, для контроля


Время: 14:18.

Время: 14:18.
© OSzone.net 2001-