Реализация функций длины переменной, выделение подстроки с параметрами в переменной.
Частенько приходится городить огород для получения достаточно простого результата.
1. Есть переменная, допустим set a=qwertyuiop Вопрос, как узнать ее длину? Сейчас мне приходится писать доп. функцию из 8 строк. 2. Есть переменная, нужно выделить из нее часть, но позиция/длина хранятся в других переменных и простое set b=%a:~%b%,%c% % и различные вариации не прокатят. 3. Некоторое время назад... (хорошо сказал :teeth: ) в батнике мжно было проворачивать "макросы", т.е. присвоить переменной целую команду, затем в нужном месте вместо комады в строке стояла просто переменная, которая исполнялась по своему содержимому. С помощью такого "самомодифицирующегося кода" удавалось обойти некоторые ограничения. |
1. Увы, без процедур пока не выходит: :(
Код:
@Echo Off Код:
@Echo Off Код:
@Echo Off Код:
@Echo Off |
Забавно, в CALL /? нигде не упоминается такой забавный способ, как вызов ДОС-команды.
т.е. я просто использовал %$CMD% вместо Call %$CMD%. 2й вариант 2го пункта я в свое время пробовал с точностью наоборот, т.е. Set d=%a:~!b!,!c!%, и даже для правильности оборачивал его в проверку условия: if 0==0 Set d=%a:~!b!,!c!% и никакого результата на выходе. Не понимаю. Для 1го пункта пользуюсь такой заготовкой (по идее Ваш код должен выполняться быстрее, т.к. у меня более длинная операция над строкой, но писалось с учетом известных мне тогда возможностей): Код:
@echo off |
вспомнил ещё один способ определения длины в две строки:
Код:
@Echo Off |
Код:
@ECHO OFF С раскоментированной строкой «DEL "qwe.txt" /f /q»: 5840 ms Код:
@ECHO OFF |
По моему самое удачное от XGuest http://forum.script-coding.com/viewtopic.php?id=7949
Код:
@echo off |
делюсь бриллиантом
Код:
::=========================================================================== |
1.
Код:
:LEN :: Длина строки |
Время: 15:13. |
Время: 15:13.
© OSzone.net 2001-