Как интерпретатор команд Windows (CMD.EXE) разбирает сценарии?

Я наткнулся на ss64.com , который хорошо помогает в написании пакетных сценариев, которые будет запускать интерпретатор команд Windows.

Однако мне не удалось найти хорошее объяснение грамматики пакетных сценариев, того, как объекты расширяются или не расширяются, и как избежать их.

Вот примеры вопросов, которые я не смогли решить:

  • Как работает система котировок? Я сделал TinyPerl скрипт

    Я наткнулся на ss64.com , который дает хорошую помощь в том, как писать пакетные сценарии, которые будет запускать интерпретатор команд Windows.

    Однако мне не удалось найти хорошее объяснение грамматика пакетных сценариев, как вещи расширяются или не расширяются, и как избежать вещей.

    Вот примеры вопросов, которые я не смог решить:

    • Как работает система цитат? Я сделал TinyPerl скрипт

      Я наткнулся на ss64.com , который дает хорошую помощь в том, как писать пакетные сценарии, которые будет запускать интерпретатор команд Windows.

      Однако мне не удалось найти хорошее объяснение грамматика пакетных сценариев, как вещи расширяются или не расширяются, и как избежать вещей.

      Вот примеры вопросов, которые я не смог решить:

      • Как работает система цитат? Я сделал TinyPerl скрипт
        • Как работает система котировок? Я сделал TinyPerl скрипт
          • Как работает система котировок? Я сделал TinyPerl скрипт
            ( foreach $ i (@ARGV) {print '*'. $ I;} ), скомпилировал его и назвал так:
            • my_script.exe "a" "b" "c" → вывод * a "b * c
            • my_script.exe" "" ab c "" " → вывод * "a * b * c"
          • Как работает внутренняя команда echo ? Что раскрывается внутри этой команды?
          • Почему я должен использовать для [. ..] %% I в сценариях файлов, но для [...]% I в интерактивных сеансах?
          • Что такое escape-символы и в каком контексте? Как избежать знак процента? Например, как я могу буквально повторить % PROCESSOR_ARCHITECTURE% ? Я обнаружил, что echo.exe% "" PROCESSOR_ARCHITECTURE% работает, есть ли лучшее решение?
          • Как совпадают ли пары % ? Пример:
            • установить b = a , echo% a% b% c% % aac%
            • установить a = b , echo% a% b% c% bb c%
          • Как обеспечить передачу переменной в команду в качестве единственного аргумента, если эта переменная когда-либо содержит двойные кавычки?
          • Как хранятся переменные при использовании установить команду? Например, если я установлю a = a "b , а затем echo.% A% , я получу a" b . Однако если я использую echo.exe из UnxUtils, я получаю ab . Почему % a% расширяется по-другому?

          Спасибо за освещение.

132
задан 9 revs, 2 users 100% 17 May 2018 в 23:30
поделиться