Мне создали приложение с компилятором C++ MinGW, который работает, что-то как grep - acommand выглядит примерно так:
myapp -e '.*' *.txt
где вещью, которая прибывает после переключателя-e, является regex, и вещью после этого является шаблон имени файла. Кажется, что MinGW автоматически разворачивает (шарики в терминах UNIX) командную строку, таким образом, мой regex искажается. Я могу выключить это поведение, я обнаружил путем установки глобальной переменной _CRT_glob
обнулять. Это будет хорошо для удара и других разумных пользователей оболочки, поскольку оболочка развернет шаблон файла. Для MS cmd.exe
пользователи однако, похоже, что я должен буду развернуть шаблон файла сам.
Так мой вопрос - кто-либо знает о globbing библиотеке (или средство в MinGW), чтобы сделать частичное расширение командной строки? Я знаю о _setargv функции Windows CRT, но это разворачивает полную командную строку. Обратите внимание, что я видел этот вопрос, но он действительно не обращается к частичному расширению.
Я закончил тем, что использовал условную компиляцию для записи моего собственного кода globbing для версии Windows моего приложения. Это было довольно легко, поскольку у меня есть свой собственный класс CommandLine, который инкапсулирует argc и argv от основного (). Однако, мне было бы интересно слышать о других решениях.
Я не уверен, что полностью понимаю вашу проблему здесь, но в Windows вы должны иметь возможность использовать функции FindFirstFile / FindNextFile из WIN32 API. Честно говоря, я не знаю, сопоставимы ли их возможности подстановки с glob (), но вы можете попробовать