|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Разбор параметров командной строки, содержащих символ * |
|
CMD/BAT - [решено] Разбор параметров командной строки, содержащих символ *
|
Новый участник Сообщения: 6 |
Добрый день.
Задача состоит в следующем. Необходимо сформировать массив ARG##, состоящий из принятых скриптом параметров командной строки, а так же сформировать переменную CMDARG, состоящую из всех принятых параметров. Особенность принимаемых параметров в том, что они могут содержать символы '*', '#' и '.'. Задачу удалось решить двумя вариантами, но в обоих присутствуют свои "грабли". В закомментированном цикле for обрабатывается столько параметров, сколько принято, но видимо из-за (%*) теряются параметры, содержащие символ *. Во втором цикле for параметры с символом * обрабатываются нормально, но получается использовать только 9 параметров, т.к. 10-ый параметр передается в :PARAMSET как 1-ый & 0, 11-ый - как 2-ой & 0 и т.д. Помогите собрать воедино оба кода, чтобы обрабатывались все принятые параметры, в т.ч. содержащие *. Для удобства прикрепляю готовые к тестированию файлы (см. cmd.zip). set ARG01=- set CMDARG=- set /a c=1 ::for %%i in (%*) do ( :: call :PARAMSET %%i ::) for /l %%i in (1,1,11) do ( call :PARAMSET %%%%i ) exit /b :PARAMSET echo par%c%='%1' if not '%1'=='' ( if '!CMDARG!'=='-' set CMDARG= if %c% LSS 10 (set num=0%c%) else (set num=%c%) set ARG!num!=%1 set CMDARG=!CMDARG! %1 set /a c=c+1 ) goto :EOF |
|
Отправлено: 12:33, 26-03-2016 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата tech-gs:
Скрытый текст
C:\Мои проекты\0003>0001.cmd Мама мыла раму 1*2 3#4 567 Седьмой Восьмой Девятый Десятый Одиннадцатый ARG01=Мама ARG02=мыла ARG03=раму ARG04=1*2 ARG05=3#4 ARG06=567 ARG07=Седьмой ARG08=Восьмой ARG09=Девятый ARG10=Десятый ARG11=Одиннадцатый Цитата tech-gs:
|
||
Отправлено: 13:27, 26-03-2016 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать Цитата tech-gs:
Нет, не из-за этого. Символ "*" в "%*" не влияет на потерю параметров, содержащих символ "*". На потерю параметров влияет именно особенность разбора командой "FOR" элементов с символами "*", а также и с символами "?". Дело в том, что использование команды "FOR" без ключей изначально рассчитано на обработку файлов в качестве элементов набора, а символы "*" и "?" в этом случае являются подстановачными символами. Команда "FOR" без ключей, обрабатывая элемент набора, содержащий символы "*" и "?", ищет файлы, подпадающие под этот шаблон, и не найдя таковых, выдаёт пустой результат. Интересно, что если файлы, подпадающие под такой шаблон, будут обнаружены, то обрабатываться будет именно список этих файлов, что может привести к большим неожиданностям в результатах выполнения пакетного файла... ![]() ![]() ![]() |
|
Отправлено: 13:41, 26-03-2016 | #3 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Подозревал, что найдется совершенно иной подход. Все работает, спасибо! |
|
Отправлено: 13:45, 26-03-2016 | #4 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Доступ - [решено] Запуск командной строки от имени Администратора из командной строки | emcee | Microsoft Windows 8 и 8.1 | 12 | 06-05-2023 07:36 | |
CMD/BAT - запуск командной строки от имени администратора из командной строки | jah | Скриптовые языки администрирования Windows | 18 | 19-09-2015 08:59 | |
Интернет - Изменение параметров интернет подключения с командной строки или Powershell | termikx | Скриптовые языки администрирования Windows | 5 | 14-10-2013 15:46 | |
CMD/BAT - CMD/BAT разбор строки с символом перехода строки в конце. | Alex1254 | Скриптовые языки администрирования Windows | 0 | 19-09-2013 19:24 | |
[решено] Импорт в реестр параметров, содержащих переменные в значениях | Wu-Tang | Автоматическая установка Windows 2000/XP/2003 | 36 | 10-01-2012 09:36 |
|