Batch file 使用批处理文件删除软件/新安装

Batch file 使用批处理文件删除软件/新安装,batch-file,Batch File,我需要从我的所有分支计算机(32位和64位)中删除一个程序,并为所有计算机重新安装和更新带有注册表修复程序的软件版本。这似乎并不难,但我尝试使用批处理文件(可能是最简单的)来实现这一点,我一直在检查操作系统版本部分 我能得到一些帮助吗?这是一批; 指针很少 check error语句是因为我遇到windows安装程序错误 deletetethedirectory语句不起作用,不知道为什么,所以我可能会将其转储 守则: echo off :CheckOS (this part not don

我需要从我的所有分支计算机(32位和64位)中删除一个程序,并为所有计算机重新安装和更新带有注册表修复程序的软件版本。这似乎并不难,但我尝试使用批处理文件(可能是最简单的)来实现这一点,我一直在检查操作系统版本部分

我能得到一些帮助吗?这是一批; 指针很少

  • check error语句是因为我遇到windows安装程序错误
  • deletetethedirectory语句不起作用,不知道为什么,所以我可能会将其转储
守则:

echo off

:CheckOS (this part not done)
IF EXIST "%PROGRAMFILES(X86)%" (GOTO disconnect) ELSE (GOTO Fincentric check)

if exist r:\ goto disconnect

:disconnect
net use r: /d

net use r: \\a0363sfp06\rfsnt
pause

:check
if exist c:\%programfiles%\Fincentric\CAMNet            goto remove01 else
if exist c:\%programfiles%\Fincentric\BridgeNET v2.3.0  goto remove02 else
if exist c:\%programfiles%\Fincentric\CAMPlugins        goto remove03 else
if exist c:\%programfiles%\Fincentric\Canvas            goto remove04 else
if exist c:\%programfiles%\Fincentric\Platform          goto remove05 else
if exist c:\%programfiles%\Fincentric\SupportLibraries  goto remove06 else


:remove01
start /wait msiexec /quiet /qr /uninstall R:\WBDK\WBCAMNet_CGI.msi
if %ERRORLEVEL% EQU 1721 (
   echo Failure Reason Given is %errorlevel%
   exit /b %errorlevel%
)
:remove02
start /wait msiexec /quiet /qr /uninstall R:\WBDK\WBBridgeNET.msi
if %ERRORLEVEL% EQU 1721 (
   echo Failure Reason Given is %errorlevel%
   exit /b %errorlevel%
)
:remove03
start /wait msiexec /quiet /qr /uninstall R:\WBDK\WBCAMPlugins.msi
if %ERRORLEVEL% EQU 1721 (
   echo Failure Reason Given is %errorlevel%
   exit /b %errorlevel%
)
:remove04
start /wait msiexec /quiet /qr /uninstall R:\WBDK\WBCanvas.msi
if %ERRORLEVEL% EQU 1721 (
   echo Failure Reason Given is %errorlevel%
   exit /b %errorlevel%
)
:remove05
start /wait msiexec /quiet /qr /uninstall R:\WBDK\WBPlatform.msi
if %ERRORLEVEL% EQU 1721 (
   echo Failure Reason Given is %errorlevel%
   exit /b %errorlevel%
)
:remove06
start /wait msiexec /quiet /qr /uninstall R:\WBDK\WBSupportLibraries.msi
if %ERRORLEVEL% EQU 1721 (
   echo Failure Reason Given is %errorlevel%
   exit /b %errorlevel%
)

:Fincentric check
cls
echo Checking if Fincentric folder still exist....
if exist c:\%PROGRAMFILES(X86)%\Fincentric
TIMEOUT /T 3 /NOBREAK
del /S /Q "c:\Program Files"\fincentric goto alldone
pause

:alldone
echo WDBK 5 has been remove...
TIMEOUT /T 1
exit
rem :remove07
rem :remove
rem :remove

问题不在于
:CheckOS
部分,而在于
:Fincentric check
部分

if
语句不完整并且有一些错误。这一行:

if exist c:\%PROGRAMFILES(X86)%\Fincentric
将扩展到

if exist c:\C:\ProgramFiles (x86)\Fincentric
删除前导的
c:
,并将路径名放在引号中,以确保它没有空格问题。应该是这样的:

if exist "%PROGRAMFILES(X86)%\Fincentric" (
    echo do stuff
    echo do more stuff
) 
路径周围不正确的引号也是您的
del
行存在的相同问题的一部分。另一部分是两个命令之间缺少连接符号
&
(与号):

del /S /Q "c:\Program Files\fincentric" & goto alldone
此外,节标签最多只能识别一个空格,因此
:Fincentric check
实际上只能识别为
:Fincentric
。这看起来不会给你带来任何麻烦,但在某些情况下可能会。为了安全起见,我将其重命名并删除空格(行
:Fincentric\u Check
:FincentricCheck