2013-04-23 81 views
1

如何在安装框架时将此脚本移至INSTALLAX? 即使它已经存在,它也会安装该框架。IF EXIST GOTO NEXT

我错过了什么?

Echo off 
IF EXIST "%Programfiles(x86)%" (GOTO 64-Bit) ELSE (GOTO 32-Bit) 

:32-Bit 
IF EXIST "%windir%\Microsoft.NET\Framework\v4.0.30319\SetupCache\Extended\setup.exe" GOTO INSTALLAX ELSE GOTO INSTALLFRAMEWORK 

:64-Bit 
IF EXIST "%windir%\Microsoft.NET\Framework64\v4.0.30319\SetupCache\Extended\setup.exe" GOTO INSTALLAX ELSE GOTO INSTALLFRAMEWORK 

:INSTALLFRAMEWORK 
start "" /w "\\server1\appdata01\Deployment\MicrosoftDynamicsAX\Prerequisites\Net Framework 4.0\dotNetFx40_Full_x86_x64.exe" /q /norestart 
ECHO .NETFramework4.0Installed %Date% %TIME% >> \\server1\appdata01\Deployment\MicrosoftDynamicsAX\Client_Log\Framework\%COMPUTERNAME%.log 

:INSTALLAX 
start "" /w "\\server1\appdata01\Deployment\MicrosoftDynamicsAX\DynamicsAX\setup.exe" RunMode=Custom HideUI=1 AcceptLicenseTerms=1 ByPasswarnings=0 InstallClientUI=1 ClientAOSServer=ax-aos02-prod AOSPort=2712 AOSWsdlPort=8101 ClientLanguage=en-us ConfigurePrerequisites=1 ClientConfigFile="\\sespfs01\appdata01\Deployment\MicrosoftDynamicsAX\AX_Icons\DAX_Prod(usr)32-bit.axc" LogDir="\\server1\appdata01\Deployment\MicrosoftDynamicsAX\Client_Log" 
ECHO AXDynamics2012Installed %Date% %TIME% >> \\server1\appdata01\Deployment\MicrosoftDynamicsAX\Client_Log\AXDynamics\%COMPUTERNAME%.log" GOTO END 

:END 
Exit 
+1

您在64位标签的IF子句中缺少ELSE。 – Vicky 2013-04-23 11:23:59

+0

是的,还有比ELSE更多的东西,比如“&”。 – ElektroStudios 2013-04-23 11:30:03

回答

0

您已经在第一个IF语句(使用圆括号)中做了正确的操作。

:32-Bit 
IF EXIST "%windir%\Microsoft.NET\Framework\v4.0.30319\SetupCache\Extended\setup.exe" 
    (GOTO INSTALLAX) ELSE (GOTO INSTALLFRAMEWORK) 

:64-Bit 
IF EXIST "%windir%\Microsoft.NET\Framework64\v4.0.30319\SetupCache\Extended\setup.exe" 
    (GOTO INSTALLAX) ELSE (GOTO INSTALLFRAMEWORK) 

(增加了可读性换行只)

此外,你还缺少一个人。

+0

谢谢他的帮助! – user2310230 2013-04-26 12:05:28

2

你的问题是显而易见的:

IF EXIST "%windir%\Microsoft.NET\Framework64\v4.0.30319\SetupCache\Extended\setup.exe" GOTO INSTALLAX GOTO INSTALLFRAMEWORK 

没有ELSE在条件

而在替补“:INSTALLFRAMEWORK”和“:INSTALLAX”你不告诉退出程序,使“:INSTALLAX”总是处理。

另外在“:INSTALLAX”您使用的两个命令,而无需使用连接操作符“&”程序(回声布拉布拉>>文件转到布拉布拉

下面是代码:

@Echo off 

Set "FW32=%windir%\Microsoft.NET\Framework\v4.0.30319\SetupCache\Extended\setup.exe" 
Set "FW64=%windir%\Microsoft.NET\Framework64\v4.0.30319\SetupCache\Extended\setup.exe" 

IF EXIST "%Programfiles(x86)%" (
    REM 64BIT 
    IF EXIST "%FW64%" (GOTO :INSTALLAX) ELSE (GOTO :INSTALLFRAMEWORK) 
) ELSE (
    REM 32BIT 
    IF EXIST "%FW32%" (GOTO :INSTALLAX) ELSE (GOTO :INSTALLFRAMEWORK) 
) 

:INSTALLFRAMEWORK 
start "" /Wait "\\server1\appdata01\Deployment\MicrosoftDynamicsAX\Prerequisites\Net Framework 4.0\dotNetFx40_Full_x86_x64.exe" /q /norestart 
ECHO .NETFramework4.0Installed %Date% %TIME% >> "\\server1\appdata01\Deployment\MicrosoftDynamicsAX\Client_Log\Framework\%COMPUTERNAME%.log" 
Pause&Exit 

:INSTALLAX 
start "" /Wait "\\server1\appdata01\Deployment\MicrosoftDynamicsAX\DynamicsAX\setup.exe" RunMode=Custom HideUI=1 AcceptLicenseTerms=1 ByPasswarnings=0 InstallClientUI=1 ClientAOSServer=ax-aos02-prod AOSPort=2712 AOSWsdlPort=8101 ClientLanguage=en-us ConfigurePrerequisites=1 ClientConfigFile="\\sespfs01\appdata01\Deployment\MicrosoftDynamicsAX\AX_Icons\DAX_Prod(usr)32-bit.axc" LogDir="\\server1\appdata01\Deployment\MicrosoftDynamicsAX\Client_Log" 
ECHO AXDynamics2012Installed %Date% %TIME% >> "\\server1\appdata01\Deployment\MicrosoftDynamicsAX\Client_Log\AXDynamics\%COMPUTERNAME%.log" 
Pause&Exit