Batch file 在解析所有*.MSI模式匹配的目录后,传递相同的开关、参数以安装多个MSI文件

Batch file 在解析所有*.MSI模式匹配的目录后,传递相同的开关、参数以安装多个MSI文件,batch-file,wildcard,windows-installer,Batch File,Wildcard,Windows Installer,(很抱歉没有用更简洁的措词——我不知道如何总结。) 我有一个很大的源文件目录——所有MSI的。 与其为每个文件编写单独的命令行,我更愿意: 使用*.msi模式匹配(或类似)调用所有这些函数。。。。并使用“/passive/norestart”运行它们 (可选)还包括“/liew”参数,并替换为 “[文件名的第一部分].log” 我已经试过了: FORFILES /P 3DxSoftware64\. /M *.msi /S /C "msiexec @path /passive /norestart

(很抱歉没有用更简洁的措词——我不知道如何总结。)

我有一个很大的源文件目录——所有MSI的。 与其为每个文件编写单独的命令行,我更愿意:

  • 使用*.msi模式匹配(或类似)调用所有这些函数。。。。并使用“/passive/norestart”运行它们

  • (可选)还包括“/liew”参数,并替换为 “[文件名的第一部分].log”

  • 我已经试过了:

    FORFILES /P 3DxSoftware64\. /M *.msi /S /C "msiexec @path /passive /norestart"  
    
    。。。但它失败了;它只启动“MSIEXEC/?”的对话框选项;实际上并不调用文件@path本身。 但是,如果我删除整个“/C”…”字符串,那么它会正确地回显文件名(带有完整路径)

    我试过各种方法来传递结果,例如

    /C echo @path | msiexec
    
    但它不起作用

    有什么想法吗?
    我的消息来源,这让我想到了这一点: -

    谢谢你的帮助

    --Joseph

    也许您错过了选项对话框的这一部分:

    …
    Install Options
        </package | /i> <Product.msi>
            Installs or configures a product
    …
    
    应该是

    msiexec /package @path …
    

    msiexec /package @path …
    
    msiexec /i @path …