У меня есть пакетный файл, который пытается выполнить следующие действия:Как запустить команду в пакетном файле, содержащем кавычки ("")?
FOR /F "tokens=1" %%G IN ('git show --pretty="format:" --name-only 54173344ab18a7d8e9ff2614cca62b671c8c7e2a') DO echo %%G
что приводит к ошибке мерзавца «:„Формат“Недопустимое имя объекта со смертельным исходом.»
Однако, если я просто поместил команду в пакетный файл, я получаю вывод, который я ожидаю.
git show --pretty="format:" --name-only 54173344ab18a7d8e9ff2614cca62b671c8c7e2a
Производит:
Files/MyFiles/header.html
Files/MyFiles/foo.html
вопрос что-то делать с кавычками "формат:".
Я попытался убежать от них, используя «», но безрезультатно. Я тоже пробовал ^. Я попытался использовать параметр usebackq.
Этот цикл также работает, если вы вынимаете аргумент --pretty = "format:", но затем я получаю кучу добавленного текста.
Попробуйте использовать for/F usebackq tokens = 1 ... ', а затем используйте обратные вызовы вокруг вашей команды' git'. Обратные ссылки похожи на одинарные кавычки, которые у вас есть в настоящее время, но обходятся иначе. –
Вам нужно избегайте символа '=' в команде, например '--pretty^=" format: "'. В противном случае я думаю, что все в порядке. – eryksun
Чтобы увидеть это, я запустил тестовую партию под отладчиком ('cdb cmd/c test. cmd') и установите контрольную точку ('bp kernel32! CreateProcessW'), чтобы проверить командную строку, которая порождает ребенка (второй параметр x64:' du @ rdx'). – eryksun