Вызов команды с переменной через командный файл - PullRequest
0 голосов
/ 01 марта 2019

У меня есть командный файл, который копирует и перемещает вещи, но я застреваю, работая с сертификатами.Я должен использовать команду, предоставляемую поставщиком, под названием installrootcacert.cmd, но мне также нужно передать имя файла сертификата, который точно называется rootca.cer.Я должен использовать скрипт, предоставляемый поставщиком, чтобы избежать этого.

Обычно я запускаю команду из команды примерно так:

c:\vendor\Software\Conf\Security\installrootcacert.cmd rootca.cer

Я пытался call команда из моего командного файла, но безуспешно.

Я пытался использовать переменную, но поскольку эта команда вызывает несколько других процессов, она ищет «rootca.cer» после команды.Если я помещу его в переменную, другие процессы завершатся неудачно.Я не могу изменить другие процессы.

echo @off
cd E:\vendor\Software\Conf\Security\trustedCA
e:
call "e:\vendor\Software\Conf\Security\installrootcacert.cmd rootCA.cer"

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Возможное решение:

@echo off
cd /d "E:\vendor\Software\Conf\Security\trustedCA"
call "E:\vendor\Software\Conf\Security\installrootcacert.cmd" rootCA.cer
  • echo @off заменено на @echo off, поскольку echo @off будет отображаться @off в cmd.
  • ЭтоУпомянутый Compo в комментариях, вы меняете диски: используйте опцию /d с cd.
  • Наконец, указывайте only имя файла в команде call, иначе окна будутинтерпретировать это как полное имя файла (то есть E:\vendor\Software\Conf\Security\installrootcacert.cmd rootCA.cer, поэтому имя файла будет installrootcacert.cmd rootCA.cer).
0 голосов
/ 01 марта 2019

Попробуйте следующее.Вам нужно настроить @ в вашем выражении echo и ваших цитатах:

@echo off
cd E:\vendor\Software\Conf\Security\trustedCA
e:
call "e:\vendor\Software\Conf\Security\installrootcacert.cmd" rootCA.cer

Причина, по которой это работает, заключается в том, что помещение команды @echo off в ваш скрипт останавливает вывод всех команд.Если у вас просто есть echo @off, вы буквально собираетесь повторить это.(благодарность за двойной звуковой сигнал для первоначального предложения)

Что касается кавычек, то, что вы пытаетесь сделать, это передать это как команду, поэтому, когда вы call rootCA.cer, вам нужно сделатьубедитесь, что вы передаете ему правильные параметры, поэтому вы помещаете этот путь в кавычки.Если вы поместите ВЕСЬ объект в кавычки, вы на самом деле не будете вводить call для команды rootCA.cer.(кредит LotPings за первоначальное предложение).

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