![]() |
Задача: парсинг текстового файла
Добрый день, системные администраторы и программисты-разработчики!
Давно хочу решить одну задачку средствами командного интерпретатора Windows, но всё времени не хватает углубиться в тонкости языка. Задача возникла как скрипт ловушки для системы управления версиями Subversion. В частном случае я её решил, но хотелось бы в общем. Итак, внимание, задачка: Исходные данные. Есть текстовый файл, структура которого следующая: Код:
Path1 - Mask1_1 Требуется получить в локальную переменную командного пакета строку вида: Код:
%Result% = "Path1\Mask1_1 Path1\Mask1_... Path1\Mask1_N-1 Path1\Mask1_N ... Path...\Mask..._1 Path...\Mask..._... Path...\Mask..._N-1 Path...\Mask..._N PathM-1\MaskM-1_1 PathM-1\MaskM-1_... PathM-1\MaskM-1_N-1 PathM-1\MaskM-1_N PathM\MaskM_1 PathM\MaskM_... PathM\MaskM_N-1 PathM\MaskM_N" Возможен, конечно, косяк, если в имени пути или маске содержатся пробелы, либо в имени пути содержатся подряд идущие символы пробел, минус, пробел. Но такие случаи пока от условий задачи отсечём. Пример: На основе файла Код:
Projects/Builder - *.~* Код:
Projects\Builder\*.~* Projects\Builder\*.$* Projects\Builder\*.obj Projects\CSharp\*.cache* Projects\CSharp\*.suo Благодарен уже за уделённое внимание! |
Цитата:
Код:
@echo off |
Спасибо, Иностранец. Честно говоря, это читерство какое-то. Ничего не понял. Разбираться не стал, ибо столько водки дома уже нету. Скрипт почти работает.
Выводит Код:
Projects/Builder\*.~* Projects/Builder\*.$* Projects/Builder\*.obj Projects/CSharp\*.cache* Projects/CSharp\*.suo Код:
Projects\Builder\*.~* Projects\Builder\*.$* Projects\Builder\*.obj Projects\CSharp\*.cache* Projects\CSharp\*.suo Цитата:
Код:
echo %Result% Мне необходимо вызывать эту :0 в нескольких местах моего скрипта. Предусмотрено ли что-то вроде ret, чтобы вернуться в место после вызова? Или goto - наше всё? И ещё. Всё таки для борьбы с пробелами в путях и масках, пусть каждая полная маска будет заключена в кавычки. То есть Код:
"Projects\Builder\*.~*" "Projects\Builder\*.$*" "Projects\Builder\*.obj" "Projects\CSharp\*.cache*" "Projects\CSharp\*.suo" |
Цитата:
Цитата:
Скрытый текст
Код:
… Можно даже значения возвращать в переменную окружения :). |
Цитата:
Цитата:
Про exit /b понял. Спасибо! Цитата:
|
Цитата:
Код:
@echo off |
Спасибо! А что насчёт
Цитата:
Цитата:
|
Тогда так:
Код:
@echo off |
Спасибо всем!
Скрипт автоматизации добавления новых файлов под версионный контроль при фиксации обновлений теперь работает в общем виде и правильно учитывает свойства svn:global-ignores и svn:ignore, чего и требовалось от него добиться. |
Время: 21:59. |
Время: 21:59.
© OSzone.net 2001-