批处理文件以静默方式安装多个程序

时间:2015-04-27 06:46:56

标签: windows batch-file

我想创建一个批处理文件,它将按顺序安装多个程序。 我可以使用批处理文件中的以下代码顺序安装所需的软件:

@echo off
"Path/software1.exe"
"Path/software2.exe"
"Path/software3.exe"
"Path/software4.exe"

OR

@echo off
start /wait "Path/software1.exe"
start /wait "Path/software2.exe"
start /wait "Path/software3.exe"
start /wait "Path/software4.exe"

但是在安装任何软件之前我想检查它是否已安装。

我尝试使用以下两种方式获取已安装软件的列表:

wmic product get name

OR

reg export HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall temp.txt /y

但是我必须搜索不可行的字符串。因此,我想知道他们是否有任何命令来检查是否使用批处理文件安装了特定的应用程序? 提前谢谢。

3 个答案:

答案 0 :(得分:1)

没有正式的方法来检查是否安装了应用程序。安装程序,大多数情况下,只需复制文件,设置注册表项,添加开始菜单快捷方式,而无需在Windows上注册,我已经安装了。

查看是否安装了应用程序的一般方法是查看它是否在“控制面板”的“添加/删除程序”小程序中有一个条目。 ARP中的每个条目都可以在注册表中找到: Software\Microsoft\Windows\CurrentVersion\Uninstall (HKEY_CURERNT_USER和HKEY_LOCAL_MACHINE)

如果它是基于MSI的安装程序,那么您可能可以编写一些代码以查看功能ID或组件ID是否随MSI API一起安装。我不知道如何在不编译某些帮助程序的情况下在BAT文件中调用这些函数。

答案 1 :(得分:0)

你只需要条件

如果不存在“C:\ Program Files \ software1”
“路径/ software1.exe”

如果不存在“C:\ Program Files \ software2”
“路径/ software2.exe”

如果不存在“C:\ Program Files \ software3”
“路径/ software3.exe”

如果不存在“C:\ Program Files \ software4”
“路径/ software4.exe”

答案 2 :(得分:-1)

这可能会有所帮助(我用来帮助您在完成批处理后显示已安装的软件)是将“ appwiz.cpl”放在脚本末尾而不加引号。

示例:

@echo off
C:\WINDOWS\system32>
cd C:/ (assuming files are located here)
echo You are about to install software1,2,3, press ENTER to proceed...
pause
"path\software1.exe"
"path\software2.exe"
"path\software3.exe"
appwiz.cpl