|
Компьютерный форум 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 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать Цитата volk1234:
Но потом в процессе обработки символы подчёркивания заменяются на пробелы. И на выходе мы видим |
|
------- Отправлено: 13:25, 11-12-2009 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 426
|
Профиль | Отправить PM | Цитировать А мне нравится SHIFTом пользоваться, например:
@Echo off SetLocal EnableExtensions rem демонстрация обработки ключей. :Loop set Key=%1 set Key=%Key:?=h% shift rem Недостаток в том, что желательно проверить ключ на совпадение, иначе будет аварийное завершение батника. GoTo L%Key% 2>nul Echo Неверный параметр: "%1" (используйте спраку: %~nx0 /? ) :L exit :L-H :L/h Echo Ключи: Echo -h - Подсказка Echo -d ^<mask^> - Каталог Echo -r - Перезагрузка ;) Echo -p ^<Start^> ^<Finish^> - Пинг диапазона адресов Goto Loop :L/D :L-D dir /b /on /a /s %1 shift Goto Loop :L/R :L-R msg * Bye! ;) rem Reboot -r -t 1 Goto Loop :L/P :L-P for /L %%a in (%1,1,%2) do ping -a -n 1 192.168.0.%%a shift & shift Goto Loop |
------- Отправлено: 15:25, 11-12-2009 | #12 |
Старовер Сообщения: 1708
|
Профиль | Отправить PM | Цитировать amel27
Строка Непонятна. Создается переменная 1* которая состоит из всех оставшихся ключей ? - doreg1 255 doreg2 128 256 означает что разделители - пробелы и знак равно могут быть? Что за хитрые переменные $_* Я понимаю, что они отделяют команды от параметров, но КАК ? И тогда почему Set $_, а не Set $_%%i ? |
------- Отправлено: 12:42, 13-12-2009 | #13 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата volk1234:
Цитата volk1234:
Цитата volk1234:
$_2 - содержит имя 2-го параметра (начинается на "do") с подпараметрами (остальные); ... каждая новая переменная $_* создается если параметр начинается на "do", иначе параметр "прибавляется" к последней такой переменной, команда: |
|||
Отправлено: 15:11, 13-12-2009 | #14 |
Старовер Сообщения: 1708
|
Профиль | Отправить PM | Цитировать Я прошу прощения за паузу - ну просто невозможно попасть за компьютер, настолько много дел перед н.г.
Вопрос следующий - а вот ключи которые у меня просто - -ms -unlockall -full -nomore -kb Для них отдельные строки писать, или оставить прямую обработку через IF "%1"="-ms" Goto а потом ваш код + обработку -lreg1 ключей и -unreg1 -unreg2 ключей ? |
------- Отправлено: 01:35, 15-12-2009 | #15 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата volk1234:
|
|
Отправлено: 03:26, 15-12-2009 | #16 |
Старовер Сообщения: 1708
|
Профиль | Отправить PM | Цитировать Привет еще раз
Все бы хорошо, да я запутался с отсечением знака '-' от имени ключа. Белиберда какая то получается. Как правильно отсечь минус от имени ключа? В самом скрипте поменял строку If /I "%$P:~0,2%"=="-" Set /A $I=%$I%+1 тоесть я знаю надо применить :~1, но не знаю где... А еще как сделать, чтобы проверялись следующие условия- ключ -unlockall должен выполнятся всегда первым или только он один ключи -l* и -un* одновременно выполнятся не должны |
------- Последний раз редактировалось volk1234, 17-12-2009 в 02:13. Отправлено: 01:22, 17-12-2009 | #17 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 04:10, 17-12-2009 | #18 |
Старовер Сообщения: 1708
|
Профиль | Отправить PM | Цитировать Это не универсально, тогда меня и моя процедура перехода устроит -
If "Key1" = "-ms" goto *** If "Key1" = "-full" goto *** |
------- Отправлено: 10:20, 17-12-2009 | #19 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата 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 Call :%%j Exit /B :REG1 Echo DOREG1 %* GoTo :EOF :REG2 Echo DOREG2 %* 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 |
|
Последний раз редактировалось amel27, 18-12-2009 в 01:07. Отправлено: 10:40, 17-12-2009 | #20 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|