Я хочу написать сценарий DOS с несколькими опциональными флагами. Я должен разобрать эти дополнительные параметры.

Пример:

get_resolution.bat /?
get_resolution.bat /h input.jpg
get_resoltion.bat /v input.jpg

В * NIX это можно сделать с помощью getopts.

Те же примеры под * nix:

get_resolution -?
get_resolution -h input.jpg
get_resolution -v input.jpg

В текстовом файле сценария * nix get_resolution можно было бы написать:

while getopts ?hv flag  
do  
  case $flag in  
    ?) man get_resolution  
    h) get_horizontal_resolution $1
    v) get_vertical_resolution $1                       ;;
  esac
done

Существует ли DOS-эквивалент для * nix getopts?

1 ответ1

1

В пакетных скриптах все аргументы хранятся в переменной %* . Каждый аргумент может быть доступен с помощью переменной% 1 для первого аргумента и% 2 для второго и т.д. Вы можете обрабатывать подобные аргументы до% 9.

Более элегантная обработка аргументов требует использования команды shift.

Посмотрите на этот вопрос Stackoverflow: https://stackoverflow.com/questions/14286457/using-parameters-in-batch-files-at-windows-command-line

Он содержит больше информации об обработке аргументов в пакетных скриптах.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .