|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Обработка ключей запуска CMD- файла |
|
|
CMD/BAT - [решено] Обработка ключей запуска CMD- файла
|
Старовер Сообщения: 1708 |
Профиль | Отправить PM | Цитировать
Привет гуру (или гурам?)! В общем привет!
Сделал я такой скриптик - http://forum.oszone.net/thread-141480.html Даже GUI ваяем. Встал вопрос о ключах для командной строки. У меня они организованны убого - по одному ключу (ну еще + 1 опцию) за раз обрабатывается. Вот код: То есть, чтобы выполнить 2 команды надо 2 раза запустить скрипт А конечно охота сразу все указывать Я сделал как мог, дабы не усложнять скрипт и себе жизнь. Но может кто подскажет чего ? |
|
------- Отправлено: 00:34, 10-12-2009 |
Старовер Сообщения: 1708
|
Профиль | Отправить PM | Цитировать Приведенный код
отрезает не только '-' но и первые цифры, буквы от параметров. Т.е. приведенная вами тестовая строчка дает результат Второй вопрос - можно вставить такую обработку команды -unlockall, чтобы она выполнялась одна и другие ключи игнорировались? Ах да, еще мне не совсем понятно - как организовать в таком случае проверку синтаксиса - в случае указания несуществующего ключа, как завернуть скрипт на секцию :syntax_error |
------- Последний раз редактировалось volk1234, 17-12-2009 в 23:15. Отправлено: 23:03, 17-12-2009 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата volk1234:
Цитата volk1234:
Цитата volk1234:
@Echo Off Set $I=0& For %%i In (%*) Do Set $P=%%i& Call :CMD_PARSE For /F "Tokens=1* Delims==" %%i In ('Set $_') Do 2>Nul Call :%%j||Call :SYNTAX_ERROR %%j Exit /B :REG1 Echo REG1 %* GoTo :EOF :REG2 Echo REG2 %* GoTo :EOF :SYNTAX_ERROR Echo ОШИБКА! Ключ "%1" не поддерживается! GoTo :EOF :CMD_PARSE If /I "%$P:~0,1%"=="-" Set $P=%$P:~1%& Set /A $I=%$I%+1 Call Set $_%$I%=%%$_%$I%%%%$P% GoTo :EOF |
|||
Отправлено: 01:16, 18-12-2009 | #22 |
Старовер Сообщения: 1708
|
Профиль | Отправить PM | Цитировать Цитата volk1234:
Цитата amel27:
|
||
------- Отправлено: 02:01, 18-12-2009 | #23 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать @Echo Off Set $I=0& For %%i In (%*) Do Set $P=%%i& Call :CMD_PARSE If Not Defined $SKIP For /F "Tokens=1* Delims==" %%i In ('Set $_') Do 2>Nul Call :%%j||Call :ERR0 %%j Exit /B :REG1 Echo REG1 %* Exit /B 0 :REG2 Echo REG2 %* Exit /B 0 :ERR0 Echo ОШИБКА! Ключ "%1" не поддерживается! GoTo :EOF :CMD_PARSE If /I "%$P%"=="-unlockall" Set $SKIP=TRUE If /I "%$P:~0,1%"=="-" Set $P=%$P:~1%& Set /A $I=%$I%+1 Call Set $_%$I%=%%$_%$I%%%%$P% GoTo :EOF |
Отправлено: 02:45, 18-12-2009 | #24 |
Старовер Сообщения: 1708
|
Профиль | Отправить PM | Цитировать Единственное - команда -unlockall просто вызывает завершение скроипта, а надо - переход в секцию :unlockall
|
------- Отправлено: 10:29, 18-12-2009 | #25 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата volk1234:
@Echo Off Set $I=0& For %%i In (%*) Do Set $P=%%i& Call :CMD_PARSE If Defined $SKIP (GoTo :UnlockAll ) Else For /F "Tokens=1* Delims==" %%i In ('Set $_') Do 2>Nul Call :%%j||Call :ERR0 %%j Echo Код ПОСЛЕ обработки всех ключей Exit /B :UnlockAll Echo Код ВМЕСТО обработки ключей с последующим выходом Exit /B :REG1 Echo REG1 %* Exit /B 0 :REG2 Echo REG2 %* Exit /B 0 :ERR0 Echo ОШИБКА! Ключ "%1" не поддерживается! GoTo /B 0 :CMD_PARSE If /I "%$P%"=="-unlockall" Set $SKIP=TRUE If /I "%$P:~0,1%"=="-" Set $P=%$P:~1%& Set /A $I=%$I%+1 Call Set $_%$I%=%%$_%$I%%%%$P% GoTo :EOF |
|
Отправлено: 10:54, 18-12-2009 | #26 |
Старовер Сообщения: 1708
|
Профиль | Отправить PM | Цитировать Что то в реальном скрипте не получается обработать несколько парамеров, (один параметр нормально)
похоже глотает пробелы скрипт между ключами и параметрами ключей... :CORE Set $I=0& For %%i In (%*) Do Set $P=%%i& Call :KEYS_PARSE If Defined $SKIP (GoTo :UnlockAll ) Else For /F "Tokens=1* Delims==" %%i In ('Set $_') Do 2>Nul Call :%%j||Call :Syntax_Error %%j Echo. Echo Skript end working& Pause Echo. Exit /B 0 :KEYS_PARSE If /I "%$P%"=="-unlockall" Set $SKIP=TRUE If /I "%$P:~0,1%"=="-" Set $P=%$P:~1%& Set /A $I=%$I%+1 Call Set $_%$I%=%%$_%$I%%%%$P% GoTo :EOF |
------- Отправлено: 16:49, 18-12-2009 | #27 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата volk1234:
отсутствует обязательный оконечный пробел, разделяющий параметры |
|
Отправлено: 06:17, 19-12-2009 | #28 |
Старовер Сообщения: 1708
|
Профиль | Отправить PM | Цитировать проблема была в другом- в конкретных секциях ожидались переменные %2 %3 которых теперь просто нет...
т.е. они могут быть, но их нет. |
------- Последний раз редактировалось volk1234, 21-12-2009 в 10:23. Отправлено: 21:46, 20-12-2009 | #29 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Помогите запустить CMD-файл из CMD-файла с параметрами | Oleg48 | Скриптовые языки администрирования Windows | 2 | 18-11-2009 11:08 | |
CMD/BAT - [решено] вывод текстового файла на экран cmd | idsp | Скриптовые языки администрирования Windows | 6 | 06-04-2009 07:18 | |
[решено] Службы - Изменение типа запуска через CMD | vagner_HATE | Microsoft Windows NT/2000/2003 | 2 | 03-09-2008 06:31 | |
Помогите пожалуйста не срабатывает команда из*cmd файла запускаемого из RanOnceEx.cmd | vovchiku | Автоматическая установка Windows 2000/XP/2003 | 6 | 25-09-2007 23:38 | |
Обработка лог-файла на C++ | Guest | Программирование и базы данных | 17 | 23-03-2004 01:11 |
|