Что делает одиночная цитата в пакетных файлах Windows?

Недавно я запустил команду в windows cmd с одинарными кавычками в ней и обнаружил, что она не ведет себя так, как я ожидал.

Из попыток google «однократная оцифровка окон и двойная цитата» я нашел несколько статей, в которых люди спрашивали о том, как windows обрабатывают одиночные кавычки, такие как двойные кавычки, и о том, как bash рассматривает одиночные кавычки и двойные кавычки по-разному. Однако я не мог легко найти явное объяснение того, что одиночные кавычки делают в командах пакетных команд Windows.

Итак, что делают одиночные кавычки в пакетных файлах Windows? Выполняют ли они какие-либо функции кавычек вообще?

Одиночные кавычки вообще не используются процессором команд cmd.exe, за исключением того, чтобы заключить команду для запуска в инструкции FOR / F:

 for /f %%A in ('someCommand') do ... 

Или указать строку для обработки FOR / F, если используется опция USEBACKQ:

 for /f "usebackq" %%A in ('some string') do ... 

Все остальные цитируемые обработчики cmd.exe выполняются с двойными кавычками. Однако есть служебные программы Windows (внешние команды), такие как WMIC, которые используют одиночные кавычки для собственных целей цитирования. Но нет стандарта – каждая утилита свободна иметь собственную интерпретацию одинарных кавычек.

Непоследовательные правила escape и quote, используемые cmd.exe и различными утилит командной строки, часто затрудняют поиск правильного синтаксиса, необходимого для любой ситуации.

Вот несколько важных замечаний об использовании двойных кавычек " с cmd.exe.

  • Двойные кавычки – это простой конечный автомат. Первый " поворачивается», затем он выключается.

  • Все специальные символы обрабатываются как литеральные значения при цитировании, за исключением символов % и , и все ! символ, если включено замедленное расширение, и символ ^ если замедленное расширение включено, и ! также появляется где-то внутри линии.

  • Если цитирование отключено, вы можете избежать " как ^" чтобы предотвратить его включение. Но как только вы укажете, вы не сможете избежать закрытия. " Самый следующий " всегда будет выключаться.

  • Каковы значения ERRORLEVEL, установленные внутренними командами cmd.exe?
  • Выполнение команд командного файла Windows асинхронно
  • Какие внутренние команды cmd.exe очищают ERRORLEVEL до 0 при успешном завершении?
  • Как создать таймер пакетного файла для выполнения / вызова другой партии в течение дня
  • Как запускать несколько команд DOS параллельно?
  • Командный скрипт CMD.EXE для отображения последних 10 строк из txt-файла
  • Почему этот пример FINDSTR с несколькими буквальными поисковыми строками не находит совпадения?
  • Запуск CMD или BAT в бесшумном режиме
  • Как я могу избежать восклицательного знака! в сценариях cmd?
  • Командная строка Windows для чтения первой строки из текстового файла
  • Как установить переменную внутри цикла для / F
  • Interesting Posts

    Самый последний предыдущий рабочий день в Python

    Почему «dd conv = разреженный» не сэкономил место, как я ожидал?

    Есть ли способ установить Internet Explorer 9 на Windows

    Не удалось сбросить пароль root (MariaDB) root

    Android: захват возврата активности

    Объединение файлов в Inno Setup

    C # настройка / получение свойств classа по имени строки

    Передвиньте экранное окно на экране Mac OS X

    pinpointing “условный переход или перемещение зависит от неинициализированного значения (значений)” valgrind message

    Какая лучшая CSS-платформа и стоит ли усилий?

    Являются ли словари упорядоченными в Python 3.6+?

    Удалите Windows 10 Tech Preview (возврат к Windows 8.1)

    Как нарисовать направления дороги между двумя геокодами в android google map v2?

    swift: как получить indexpath.row при нажатии кнопки в ячейке?

    Можно ли использовать графический процессор nVidia для рендеринга графики, если монитор подключен к видеопорту материнской платы?

    Давайте будем гением компьютера.