Ищите разбор командной строки в стиле Unix 'getopt' в командном файле Windows - PullRequest
5 голосов
/ 16 августа 2010

Может ли кто-нибудь помочь мне найти что-то для анализа аргументов командной строки в командном файле Windows, как это можно сделать в сценарии оболочки Unix с использованием getopt / getopts?Это не должно быть все Posix-y;просто то, что я могу указать, какие переключатели я ожидаю, какие из них требуют / позволяют аргумент.Они не должны быть «длинными» переключателями;будут работать отдельные символы.

Это может быть внешний .exe, который вызывает пакетный файл.Он должен быть свободно распространяемым.

Ответы [ 2 ]

13 голосов
/ 07 сентября 2010

Вы можете сделать что-то вроде этого (-h не имеет аргументов, следовательно, нет сдвига после этого, -b и -s принимают дополнительные аргументы, поэтому сдвигайте их).

:GETOPTS
 if /I "%1" == "-h" goto Help
 if /I "%1" == "-b" set BASE=%2 & shift
 if /I "%1" == "-s" set SQL=%2 & shift
 shift
if not "%1" == "" goto GETOPTS
1 голос
/ 16 августа 2010

Не существует такой вещи, как getopt / getopts-подобный анализ аргументов командной строки, как вы знаете из Unix / Linux.

Пакетные файлы знают только о %0, %1, %2, ... и %* (и таких вариациях, как %~0, %~1 ..., которые удаляют кавычки, если они есть вокруг arg).

До девяти аргументов. Если есть еще что-то для обработки, вы можете использовать shift (эквивалент shift /1, если enableextensions произошло), чтобы удалить первый аргумент и сдвинуть остальные.

В основном это все.


(Возможно, вам следует больше объяснить, что именно вы пытаетесь достичь с помощью пакета, почему вы должны использовать пакет и каковы ваши другие внешние ограничения.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...