Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Обработка параметров и ключей запуска меток BAT-файла

Ответить
Настройки темы
CMD/BAT - Обработка параметров и ключей запуска меток BAT-файла

Новый участник


Сообщения: 3
Благодарности: 1

Профиль | Отправить PM | Цитировать


Продолжение темы

Создал маленький BAT файл для выполнения разных задач с глобальными, локальными параметрами и ключами.

Исходный код run.bat:
Код: Выделить весь код
@echo off
setlocal EnableDelayedExpansion EnableExtensions
rem =============================================================================
set $D=1
for %%i in (%*) do call:parse %%i
call:MAIN
if %$D% GTR 1 call:parse_do
goto:eof
rem Functions
:parse
set $P=%~1
if /I "%$P:~0,1%"=="-" if %$D% EQU 1 for /f "delims=: tokens=1,2" %%f in ('echo.%$P%') do call:parse_set %%f %%g
if /I "%$P:~0,1%"=="/" if %$D% EQU 1 set KEY_%$P:~1%=1
if /I "%$P:~0,1%"=="-" if %$D% GTR 1 call:parse_do_p %$P:~1%
if /I "%$P:~0,1%"=="/" if %$D% GTR 1 call:parse_do_k %$P:~1%
if /I not "%$P:~0,1%"=="-" if /I not "%$P:~0,1%"=="/" set /a $D+=1& set $DO_%$D%=%$P% 
goto:eof
:parse_do
set /a $_D=$D-1
for /l %%i in (1,1,%$_D%) do (
setlocal
if /I not "!$DO_%%i_P!"=="" call:parse_do_set_p !$DO_%%i_P!
if /I not "!$DO_%%i_K!"=="" call:parse_do_set_k !$DO_%%i_K!
call:!$DO_%%i!
endlocal
)
goto:eof
:parse_do_p
set /a $_D=$D-1
set $DO_%$_D%_P=%~1,!$DO_%$_D%_P!
goto:eof
:parse_do_k
set /a $_D=$D-1
set $DO_%$_D%_K=%~1,!$DO_%$_D%_K!
goto:eof
:parse_set
set $F=%1& set $G=%~2
set %$F:~1%=%$G%
goto:eof
:parse_do_set_p
for %%i in (%*) do (
set $VAR=%%i
for /f "delims=: tokens=1,2" %%f in ('echo.!$VAR!') do call:parse_set -%%f %%g
)
goto:eof
:parse_do_set_k
set KEY_%1=1
goto:eof
:help
echo.Start batch script with global parameters and key, call label with local parameters and key.
echo.
echo.Syntax:
echo.  run.bat [-global_parameters:"value"] [/global_key] [label] [[-label_parameters:"value"] [/label_key]]
echo.
echo.Format:
echo.
echo.  Global_parameters	- Set global parameters with value. -parameter1:"value1"
echo.  Global_key		- Set parameter with value 1. /key1
echo.  Label		- Call label in batch script. do1
echo.  Label_parameters	- Set label parameter value. -parameter2:"value2"
echo.  Label_key		- Set local parameter with value 1. /key2 
echo.
echo.Example:
echo.
echo.  run.bat -par1:val1 /key1 do1 -par2:"va l2" /key2 do2 /key3 
echo.
echo.Help:
echo.
echo.  run.bat help
echo.& pause& exit
rem =============================================================================

rem MAIN
:MAIN
echo.Start Global sctipt, if there is no set labels in shell.
echo.key_key1==%KEY_key1%
echo.par==%par%
goto:eof

rem do1
:do1
echo.Run DO1
echo.key_key2==%KEY_key2%
echo.par==%par%
goto:eof

rem do2
:do2
echo.Run DO2
echo.key_key3==%KEY_key3%
echo.par==%par%
goto:eof
Код запуска бат-файла с параметрами и ключами:
Код: Выделить весь код
call run.bat -par:val1 /key1 do1 -par:"va l2" /key2 do2 /key3
Результат:
Код: Выделить весь код
Start Global sctipt, if there is no set labels in shell.
key_key1==1
par==val1
Run DO1
key_key2==1
par==va l2
Run DO2
key_key3==1
par==val1
Вызов помощи:
Код: Выделить весь код
call run.bat help
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:12, 21-05-2012

 


Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Обработка параметров и ключей запуска меток BAT-файла

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - обработка текстового\xml файла firstarey Скриптовые языки администрирования Windows 1 14-05-2012 07:03
CMD/BAT - [решено] Обработка ключей запуска CMD- файла volk1234 Скриптовые языки администрирования Windows 28 20-12-2009 21:46
Проверка параметров запуска скрипта morgan1991 AutoIt 2 03-03-2009 00:43
Обработка лог-файла на C++ Guest Программирование и базы данных 17 23-03-2004 01:11




 
Переход