【发布时间】:2024-08-25 16:10:03
【问题描述】:
我正在学习使用 Microsoft 部署工具包的工作台任务序列自定义 Windows 部署映像。我正在使用我创建的 .cmd 文件添加一个 msi 包,以执行静默“客户端”安装。但即使以下在 CMD 行有效,它也不会在 cmd 文件中工作:
@echo off
c:\msiexec /i install.msi /l*vx C:\Slave_2_Install_ETIMS_log.txt INSTALL_SLAVE=true /quiet
当在 Workbench 的任务序列行中引用时,我需要让这个 cmd 文件执行静默安装:
cmd /c %Deployroot%\Applications\ETIMS\Install.cmd
但是,一旦我得到了为什么我的 .cmd 文件不起作用但同一行在命令提示符下起作用的答案,我将弄清楚上述语句中的语法是如何应用的。
【问题讨论】:
-
什么不起作用?一个问题是
install.msi的位置。除非将“当前目录”设置为包含install.msi的目录,否则这是行不通的。 -
您确定在命令行中使用的是同一行吗?你输入的是
c:\msiexec还是msiexec?? -
它必须与所需文件 msiexec install.msi 等的位置有关
-
如果“install,msi”应该与批处理文件在同一目录中,您可以使用糟糕的构造
"%~dp0install.msi"。 “%0”总是返回正在运行的脚本的路径,而“~dp”修饰符只返回目录部分。 -
msiexec可执行文件似乎不太可能位于根目录中。它可能应该被引用为“%SystemRoot%\System32\msiexec.exe”。而且,坦率地说,这应该已经在 PATH 中,这样只有使用msiexec才能工作。在cmd提示符下,where msiexec的输出是什么?
标签: windows batch-file cmd