Функции в bat/cmd файлах --------------------------------------------------------------------------------------------------

Функции в bat/cmd файлах.

В командном процессоре не предусмотрено использование функций.
Но если нельзя, а очень хочется.... Мне известны два способа ( извращения? ), как обойти это ограничение.
Итак, способ первый. Он основан на том, что команда exit может возвращать целочисленное значение в качестве кода возврата.
Таким образом можно возвращать целое 32-битное число со знаком, т.е. от -2147483648 до 2147483647 Если процедура завершается оператором

exit /b %result%

(Параметр /b - обязателен!), то в теле основной программы это значение можно получить из переменной %errorlevel%. Полный пример имитации функции может выглядеть так:

@echo off setlocal enableextensions set /a i=2 call :sqr %i% echo %i%^^2 = %errorlevel% pause endlocal exit /b 0 :sqr setlocal set /a result=%1*%1 endlocal & exit /b %result%

Второй способ моделирования функции в bat/cmd файлах.
В качестве переменной для записи результата создается переменная с именем процедуры.

@echo off setlocal enableextensions enabledelayedexpansion set /a i=3 call :sqr %i% echo %i%^^2 = %sqr% pause endlocal exit /b 0 :sqr setlocal enableextensions enabledelayedexpansion set out=%~0 set /a result = %~1 * %~1 endlocal & set %out:~1%=%result% exit /b


Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать раздел форума этого сайта (требуется регистрация).









  TopList own counter Valid XHTML 1.0 Strict Valid CSS

Фитотерапия Молитвы Водолечение Юмор Форум Кладовка link О авторе

Фитотерапия Молитвы Водолечение Юмор Форум Кладовка Ссылки О авторе Отправить сообщение Карта сайта Поиск по сайту Главная страница

Copyright © 1999 - 2024  Бронислав Краснер