CMD: конструкция switch/case как быть?

cmd batch file run

Поговорим о возможности использовать в batch файлах оператора switch/case.

Потребовалось написать простой CMD скрипт для запуска трех разных команд.
Вспомнил про оператор switch, с помощью которого делал обработку в зависимости что в переменной на PHP.

Пример конструкции на языке PHP:

<?php
switch ($i) {
    case "apple":
        echo "i это яблоко";
        break;
    case "chocolate":
        echo "i это шоколадка";
        break;
    case "pie":
        echo "i это пирог";
        break;
}
?>

Пример case на Bash:

case $i in
     apple)
          echo $i "это яблоко"
          ;;
     chocolate)
          echo $i "это шоколадка"
          ;;
     windows)
          echo $i "это пирог"
          ;; 
     *)
          echo "Usage: $1 apple | chocolate| pie"
          ;;
esac

Для batch файлов такой конструкции нет, но мы сможем сделать два варианта с помощью конструкции IF и GoTO.

При запуске будем передавать один аргумент и в зависимости, что передали будет выполняться нужный нам шаг.

Пример с использованием goto:

@echo off
set N=%~1
  goto :switch-case-N-%N% 2>nul || (
    echo "Usage: %~0 one | two | three"
  )
  :switch-case-N-one
    echo One
    exit /b
  :switch-case-N-two
    echo Two
    exit /b
  :switch-case-N-three
    echo Three
    exit /b

Пример с использованием IF ELSE IF:

@echo off
set N=%~1
IF "%N%"=="one" (
  echo One
) ELSE IF "%N%"=="two" (
  echo Two
) ELSE IF "%N%"=="three" (
  echo Three
) ELSE (
  echo "Usage: %~0 one | two | three"

На этом все.

Больше о batch файлах можно найти здесь.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

Этот сайт защищен reCAPTCHA и применяются Политика конфиденциальности и Условия обслуживания Google.

:) :D :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.