Возможная синтаксическая ошибка в пакетном файле при вызове функции FOR / F - PullRequest
0 голосов
/ 24 февраля 2020

Я столкнулся с проблемой синтаксиса в моем пакетном скрипте. Я пытаюсь передать команду в FOR / F для чтения, но я думаю, что формат команды не правильный. Вот команда, которую я пытаюсь передать FOR / F:

"C:\Program Files\Tomcat\jre\bin\keytool.exe" -list -destkeystore "C:\Certificate\certificate.pfx" -deststoretype PKCS12 -deststorepass password123

Эта команда сама по себе выглядит хорошо отформатированной, так как она запускается и выдает правильный вывод.

Но когда я пытаюсь передать команду FOR / F следующим образом:

SET ParentDirectory=C:\Program Files\Tomcat\
SET CertPath=C:\Certficate\certificate.pfx
SET CertPassword=password123

FOR /f "skip=5 tokens=1 delims=," %%G in ('"%ParentDirectory%jre^\bin^\keytool.exe" -list -destkeystore "%CertPath%" -deststoretype PKCS12 -deststorepass %CertPassword%') do (
    ECHO.
    ECHO %%G
)
PAUSE

Я получаю сообщение об ошибке:

'C:\Program' is not recognized as an internal or external command,
operable program or batch file.

Поэтому я чувствую, что синтаксис команды внутри FOR / F l oop неправильно, может быть какая-то другая комбинация цитат и обратной косой черты ...

Есть идеи?

1 Ответ

1 голос
/ 24 февраля 2020

Цитирование становится немного сложнее в предложении IN команды FOR. По сути, вам нужно заключить в кавычки всю строку кода, которую вы выполняете, а также избежать этих лишних кавычек. Там не было необходимости избегать обратной косой черты, как вы это делали.

FOR /f "skip=5 tokens=1 delims=," %%G in ('^""%ParentDirectory%jre\bin\keytool.exe" -list -destkeystore "%CertPath%" -deststoretype PKCS12 -deststorepass %CertPassword%^"') do (
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...