![]() |
Как "красиво" распознать Строчные/Прописные буквы?
Ради интереса веду "лог" затрат на свое "корыто".
Формат таков: сумма[TAB]дата[TAB]сабж при этом если поле сабж начинается с маленькой буквы, то это "работы", а с большой - "запчасти". сегодня задумался, сколькож я потратил и быстренько накатал батничек для подсчета общей суммы. Но поскольку в самом логе уже заложено разделение работ и запчастей, захотелось "добавить" разделение общей суммы на составляющие, но как оказалось отличить строчные/прописные буквы весьма проблематично. Во всяком случае сделать это "красиво", не увеличивая существенно время выполнения батника так и не удалось. Никто не сталкивался с подобными задачами? Может поделитесь опытом? |
Цитата:
Код:
@Echo Off |
ну да, при всём богатстве выбора... из штатных кроме FindStr никакой альтернативы:
Код:
@Echo Off |
Всем спасибо!
Вот у меня тоже пришлось findstr задействовать, но в отличае от варианта, предложенного amel27, вышло не 2 прохода, а аж целых 3. |
Все уже, получил нужные циферки, но сама идея различить строчные/прописные буквы только средствами CMD покоя не давала...
Таки соорудил свой батничек без внешних вызовов FindStr... Идея в том, что для set при замене подстроки не важно, какой символ искать, и подменив в строке мелких букв искомую, получаем туже самую строку, если искомая буква строчная, иначе буква прописная. Код:
@Echo off 1. Неинициализированные в основном теле переменные (в моем случае S и W) работают как локальные, т.е. их значения не сохраняются. 2. Поскольку если используешь "SetLocal EnableDelayedExpansion" - жди случайных искажений имен файлов и некоторых данных, а наличие записи set b=!Chars:%ch%=%ch%! требует включения этого режима, то попробовал включать режим непосредственно перед указанной строкой, а следом отключать - при этом в итогах также получал одни нули. |
Цитата:
Цитата:
по ходу M$ забыли для SET ключик /I аналогично IF :) Цитата:
Цитата:
|
amel27,
Цитата:
возникла пара вопросов: 1. Как называется тег для раскрывающегося текста ("читать дальше »")? Раньше не озадачивался, а сейчас потерял на форуме тему с описанием тегов. 2. Для каких целей брать все выражение в set в двойные кавычки? (Н: Set "C=%C:.=&REM.%") 3. Использование "&REM." в вышеуказанной строчке... это чтобы получить типа такого: set C=4 & rem Пример? 4. Дополнительное оборачивание в символ процента в Call Set "b=%%Chars:%ch:~0,1%=%ch:~0,1%%%" - для задержки преобразований, чтобы получить 2 этапа обработки? |
NiOl, 1. more :) ; 2. отключение интерпретации спецсимволов строки; 3. угу, и отбросить всё что оказалось справа первого вхождения. 4. yes.
|
amel27, волшебно! :yahoo:
1. насколько понял, "до кучи" перерабатываются в нормальный вид "красивые" числа типа 1 200 или 1'200 - может пригодиться при "импорте" 2. вот здесь мне показалось черезчур смело: Set /A C=%H%00+%L% - все эти "автоматические преобразования типа" меня настолько раздражают, что я бросил изучать Перл, хотя возлагал на него большие надежды, но цель достигнута! * использую сей код с легкими переделками: описание процедуры в самый конец и удаление перехода "NEXT", вынос расчета общей суммы в конец (Все-таки CMD обрабатывает скрипты неторопясь и процентов 10 времени съеэкономить этим удасться). Соклубники! - У кого есть а/м - и при этом если Вам интересно учесть расходы на своего железного помошника (не знаю кто как называет свою машину) - и при этом Вас устраивает фиксация затрат в виде обычного текстового файла (который можно с легкостью просмотреть как на любом компе под любой ОСью, так и на современных телефонах - в чем сама прелесть TXT и заключается) ТО РЕКОМЕНДУЮ ЛЮБИТЬ И ПОЛЬЗОВАТЬ СКРИПТ тов.Amel27 !!! пример структуры TXT-файла и выдаваемый результат: зы: есть еще одна идейка по расширению, но я пока промолчу, чтоб не быть эгоистом... ;) |
Цитата:
|
NiOl, 1. yes. 2. точно! забыл главную команду, ради которой собственно копейки и выравнивались ноликами до двух знаков (исправил):
Код:
Set /A L=1%L%%%100 Цитата:
Цитата:
Цитата:
|
Время: 10:23. |
Время: 10:23.
© OSzone.net 2001-