|
|
Чтение определённых строк из файла
Уважаемые знатоки!
Помогите решить задачу:
Есть файл 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 пример в архиве
Спасибо!
|
Цитата:
Цитата megaloman
Ваш пример не скачивается (может быть, Вы пытались сохранить файл .js, переименуйте его в .txt).
Мне непонятна структура.
Объясните, prog[pn]=...... обязательно начинается с новой строки или сидит где-то в середине?
В одной строке может быть несколько ключевых слов (грубо, символ ; может повторяться несколько раз в одной строке)?
Должна ли подстрока, например, prog[pn]=['Maxthon 3.5.2.1000']; в файле располагаться в одной строке, или начало может быть на одной строке, а окончание на другой? »
|
Начинаются все названия с новых строк (файл в приложении выше)
Не повторяется в одной строке.
В файле переноса на другие строки нет - видимо на одной строке,а заканчивается ";"
сохранение в txt не помогло...
|
Код:
@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++;
|
Ничего не получается-
1.Сохранил вышеуказанный код в bat файл
2.положил его вместе с файлом config.js по адресу D:\Delete\
3.Запускаю батник, ничего не меняется, пишу в нем pause -возвращает пустое окно с предложением нажать любую клавишу :(
|
Цитата:
Цитата 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 Судя по тексту в первом посте и отсутствию у Вас положительных результатов от предложенных Вам здесь решений, у Вас что-то не в порядке с символами окончания строк в Вашем исходном файле. Посему нужен Ваш исходный файл.
|
megaloman, [
Не работает :(
gora,
Исправил первое сообщение
|
gora,
В первом сообщении нажимаю на "Config пример в архиве" - начинается загрузка архива...
Цитата:
Цитата gora
Не получается прикрепить, выложите архив на файлообъменник и дайте здесь ссылку на него. »
|
Ссылка
|
4zz, кодировка файла у Вас UTF-16LE. В таких случаях кодировку нужно сообщать в первом посте.
Поправьте одну строку в коде из поста 3:
Код:
...
FOR /F "usebackq delims=" %%s IN (`Type "%From%"`) DO (
...
|
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:'];=!
)
)
:)
|
Цитата:
Цитата megaloman
*4zz*, Мне кажется ваш код ошибочен. объясните, что Вы хотите получить. »
|
Это файл настроек программы установки приложений WPI,
Этим кодом получаем список установленных программ, для контроля
|
Время: 14:18.
© OSzone.net 2001-