通过批处理文件调用带有变量的命令

时间:2019-03-01 18:53:37

标签: batch-file

我有一个用于复制和移动内容的批处理文件,但是我在处理证书时陷入困境。我必须使用供应商提供的名为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 :(得分:0)

尝试以下方法。您需要调整echo语句和引号中的Excel Powerquery M

@

之所以可行,是因为在脚本中放置命令@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时,需要确保传递正确的参数,这就是为什么您将文件路径放在引号中的原因。如果将WHOLE对象放在引号中,实际上并没有向rootCA.cer命令发出call。 (向LotPings表示最初的建议)。

答案 1 :(得分:0)

可能的解决方案可能是:

@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将在cmd中回显@off
  • Compo在评论中提到它,您正在更改驱动器:将/d选项与cd一起使用。
  • 最后,在call命令中仅引用文件名,否则Windows会将其解释为完整的文件名(即E:\vendor\Software\Conf\Security\installrootcacert.cmd rootCA.cer,因此文件名将为{{1 }}。