Batch file 如果应用程序未安装,如何检查是否存在可执行文件并运行安装程序?
我是没有SCCM的服务器/客户机环境的系统管理员,我想使用批处理文件检查组织中的计算机是否有文件名 我希望脚本检查文件Batch file 如果应用程序未安装,如何检查是否存在可执行文件并运行安装程序?,batch-file,windows-installer,Batch File,Windows Installer,我是没有SCCM的服务器/客户机环境的系统管理员,我想使用批处理文件检查组织中的计算机是否有文件名 我希望脚本检查文件egui.exe是否位于以下目录之一: Program Files\ESET\ESET Security\ Program Files (86)\ESET\ESET Security\ 如果文件存在,则脚本应不执行任何操作 如果文件不存在,则应在安静模式下从我的服务器启动Eset端点安装: msiexec /i myserver\eea_nt64_enu.msi /qb 我
egui.exe
是否位于以下目录之一:
Program Files\ESET\ESET Security\
Program Files (86)\ESET\ESET Security\
如果文件存在,则脚本应不执行任何操作如果文件不存在,则应在安静模式下从我的服务器启动Eset端点安装:
msiexec /i myserver\eea_nt64_enu.msi /qb
我写了一些东西,但我不确定它是否正确和完整:
If exist "C:\program files\ESET\ESET Security\egui.exe" echo ?
else
call msiexec /i myserver\eea_nt64_enu.msi /qb
同样,如果文件存在,我不希望脚本加载安装。
如果该文件夹中存在可执行文件,则批处理文件不应执行任何操作
如何检查程序文件和程序文件(x86)中是否存在可执行文件
如何检查每个版本的版本
如果防病毒软件的版本是旧的(比如说版本4),那么它应该强制安装并覆盖当前版本?我想您已经验证了所讨论的MSI本身并没有解决这个“问题”?它可能有必要的逻辑来清理内置的旧版本,这样您就不需要检查任何前置条件了 我看到您已经得到了一个批处理答案(
如果不存在
),但我想补充一点,您可以使用传统的活动脚本(VBScript
,Javascript
-我看到您可能是一个Javascript人),或者更现代的Powershell
脚本(我不怎么使用)
我们可以问一下您是如何调用安装的吗?通过登录脚本、计划任务、AD或其他机制?打开命令提示窗口,然后运行
if/?
和goto/?
以了解以下批处理文件:
@echo off
rem This first file existence check works on 32-bit and
rem 64-bit Windows in 32-bit and 64-bit environment.
if exist "%ProgramFiles%\ESET\ESET Security\egui.exe" goto :EOF
rem On 64-bit Windows run also a file existence check for 32-bit version
rem of application in standard program files folder for x86 applications.
if not "%ProgramFiles(x86)%" == "" if exist "%ProgramFiles(x86)%\ESET\ESET Security\egui.exe" goto :EOF
rem If this batch file is executed by 32-bit cmd.exe on 64-bit Windows
rem there is still not checked if 64-bit version of application exists
rem in standard program files folder for x64 applications.
if not "%ProgramW6432%" == "" if exist "%ProgramW6432%\ESET\ESET Security\egui.exe" goto :EOF
rem Other commands to install the application depending on Windows architecture.
阅读Microsoft文章,了解所有这些条件的原因
但我认为最好是通过查询安装了Microsoft安装程序包的该应用程序的注册表项来检查是否存在egui.exe
@echo off
%SystemRoot%\System32\reg.exe QUERY "HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\egui.exe" >nul 2>&1
if not errorlevel 1 goto :EOF
rem Other commands to install the application depending on Windows architecture.
REG如果指定的注册表项不存在,则以值1
退出,如果成功查询此注册表项,则以值0
退出
if not error level 1
表示先前执行的命令/应用程序的退出代码不大于或等于1
,这意味着低于1
,这意味着几乎所有命令和应用程序都相等
我没有安装ESET安全软件包,因此不知道是否根据Microsoft Windows应用程序注册指南注册了egui.exe
(或此软件包中的任何其他可执行文件)
要了解所有使用的命令及其工作方式,请打开命令提示窗口,在其中执行以下命令,并非常仔细地阅读为每个命令显示的所有帮助页面
echo/?
goto/?
如果/?
reg/?
reg query/?
rem/?
cmd.exe
,然后键入窗口command/?
,然后按enter键。在这种情况下,您需要键入if/?
以获取有关if
命令的信息。确定。如果文件存在,我如何使脚本“不做任何事情”?如果不存在,为什么不使用?我对Powershell脚本有点了解,但对于你的问题,我计划通过登录脚本来实现。好的,Powershell不是我的拿手好戏,但这里有一个很好的来源:(你可能知道)。如果您还没有,可以直接在系统上使用预先存在的文件运行安装程序,看看会发生什么。你可能已经这么做了。