Строка Escape для Процесса. Запустить

Как я могу выйти из неизвестной строки для передачи Процессу. Запустить как аргумент?

Я в настоящее время выхожу из основных кавычек и обратных косых черт, но недавно мой вход начал содержать вещи как http://www.fileformat.info/info/unicode/char/ff02/index.htm (Полноширинная кавычка).

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

Править: Таким образом, я должен разъяснить это. То, что я действительно ищу, является списком всех символов, которых нужно оставить в заключенной в кавычки строке ("нечто") для cmd.exe. Я первоначально имел дело с символом двойной кавычки, а также символом обратной косой черты, но у меня наконец был некоторый вход, который содержал полноширинную кавычку (как ссылается выше), которого также нужно было оставить. Таким образом, вопрос, что еще делает я должен выйти для заключенного в кавычки аргумента строки, переданного cmd.exe с Процессом. Запустить?

6
задан thelsdj 2 April 2010 в 15:23
поделиться

1 ответ

Это может быть полезно:

  • Во-первых, несколько аргументов обычно отделяются друг от друга пробелами. пробелами. На рисунке 2.3 команда имеет три аргумента, c:*.bak, e:\backup, и /s. Иногда другие символы используются в качестве разделителей аргументов. Для например, команда COPY может использовать символ + для разделения нескольких имена файлов.

  • Во-вторых, любой аргумент, который содержит пробелы, начинается или заканчивается пробелами. должен быть заключен в двойные кавычки. Это особенно важно при использовании длинных имен файлов и каталогов, которые часто содержат один или несколько пробелов. Если аргумент, заключенный в двойные кавычки сам содержит двойную кавычку символ, двойная кавычка должна быть удвоить. Например, введите "Кавычки" Аргумент" как """Кавычки"" Аргумент".

  • В-третьих, переключатели команд всегда начинаются с символа косой черты /. A переключатель - это аргумент, который изменяет работу команды каким-либо каким-то образом. Иногда переключатели начинаются со символа + или -. Некоторые переключатели являются глобальными и влияют на команду независимо от их положения в списке аргументов. Другие переключатели являются локальными и влияют на конкретные аргументы (например, на тот, который непосредственно предшествует переключателю).

  • В-четвертых, все зарезервированные символы оболочки, не заключенные в двойные кавычки, должны быть должны быть экранированы. Эти символы имеют специальное значение для командной оболочки Windows NT командной оболочки. К зарезервированным символам командной оболочки являются:

    & | ( ) < > ^

Чтобы передать зарезервированные символы оболочки как часть аргумента команды, либо весь аргумент должен быть заключен в двойные кавычки, либо либо весь аргумент должен быть заключен в двойные кавычки, либо зарезервированный символ должен быть экранирован. Для экранирования зарезервированного символа следует использовать карат (^), чтобы вывести его из текста. Для например, следующий пример команды не будет работать, как ожидалось, потому что < и > являются зарезервированными символами оболочки:

 1. C:\>echo 
 2. Синтаксис команды неверен.

 Вместо этого экранируйте два зарезервированных символа, как показано ниже:

 1. C:\>echo ^
 2. 

Как правило, зарезервированные символы оболочки символы не используются в командах, поэтому коллизии, требующие использования эскейпов, редки. Однако они случаются, однако. Например, популярная программа программа PKZIP поддерживает переключатель -&, чтобы для включения разделения дисков. Чтобы правильно использовать этот переключатель под Windows NT, -^& должен быть набран.

Совет: Символ карат сам по себе является зарезервированным символом оболочки. Таким образом, чтобы ввести символ карат как часть аргумента команды, введите два карата вместо этого. Экранирование необходимо только когда обычная интерпретация оболочки зарезервированных символов необходимо обойти.

  • Наконец, максимально допустимая длина команды оболочки, по-видимому. не документирована компанией Microsoft. Простое тестирование показывает, что командная оболочка Windows NT командная оболочка позволяет выполнять очень длинные команды - более 4 000 символов. Практически говоря, не существует значительного верхнего предела для длины команды.

http://technet.microsoft.com/en-us/library/cc723564.aspx

6
ответ дан 17 December 2019 в 00:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: