Что-то не так с строкой git --format в цикле командного файла FOR / F? - PullRequest
0 голосов
/ 07 февраля 2019

В пакетной подпрограмме я хочу получить последнюю дату git для файла.

Итак, внутри цикла for я получаю fatal: bad revision в формате, но когда я выполняю ту же команду снаружипетля, это работает просто отлично.Я также попробовал "usebackq" `` и получил тот же результат.

set f=path/to/file.md

REM what I want to do...
for /f "delims=" %%p in ('git log -1 --format=^\^"%%ci^\^" -- %f%') do set g=%%p

REM test...
git log -1 --format=^\^"%%ci^\^" -- %f%

Результат:

fatal: bad revision '"%ci"'
"2019-02-05 20:08:54 -0800"

Спасибо за любую помощь!

1 Ответ

0 голосов
/ 07 февраля 2019

Все эти побеги не были нужны.Символы, которые необходимо экранировать, это %^&<>|'`,;=(), и они экранируются с помощью каретки (^), за исключением %, который экранируется с помощью %%.Есть ли в вашей команде эти символы (git log -1 --format="%ci" -- %f%)?

Да, знак равенства: =.Вам нужно будет изменить свой код следующим образом:

set "f=path/to/file.md"

REM what you want to do...
for /F "delims=" %%A in ('git log -1 --format^="%%ci" -- %f%') do set "g=%%A"

Даже если вы хотите использовать \ * \, вам не нужно избегать их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...