Я пытаюсь передать строку в программу Win32 из командной строки, чтобы она была напечатана без изменений.
Почему я должен сбежать
"AAA " как "" "AAA " ""
но
"AAA ", (включая запятую) как "\" AAA ^ \ ","
Я не вижу последовательности в экранировании правил для командной строки Windows
P.S. Я пытаюсь создать файл .cmd
Обновление:
Я использую простую программу на C для тестирования, которая скомпилирована с gcc, никаких дополнительных объектных файлов не связано. Если я заменю его на perl, правила останутся прежними.
Я пытаюсь создать общий алгоритм побега. Он сгенерирует файл .cmd, который вызовет perl с перенаправлением вывода. В настоящее время у меня есть проблема, что если строка содержит нечетное число двойных кавычек, которые экранируются с помощью обратной косой черты, перенаправление вывода не работает. Та же проблема описана в последнем комментарии к http://blogs.msdn.com/b/oldnewthing/archive/2010/09/17/10063629.aspx.
Если я использую "" в качестве escape для ", он разделяется на пробел, поэтому он приводит к двум параметрам вместо одного. Также" "имеет некоторые артефакты.