2013-04-23 1 views
1

프레임 워크가 이미 설치되어있을 때이 스크립트를 INSTALLAX로 가져 오려면 어떻게해야합니까? 프레임 워크가 이미 존재하는 경우에도 설치됩니다.IF 존재 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

IF 절에 : 64 비트 레이블의 ELSE가 누락되었습니다. – Vicky

+0

"&"와 같이 ELSE보다 누락 된 것이 있습니다. – ElektroStudios

답변

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) 

(읽기 쉽도록 추가 된 줄 바꿈 만 해당)

또한, 당신은 ELSE 누락되었다.

+0

그는 도와 줘서 고마워! – user2310230

2

귀하의 문제는 분명하지 :

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

더 ELSE 조건에.

그리고 서브 우퍼에서

" INSTALLFRAMEWORK"및 " INSTALLAX는"당신이 그렇게 절차를 종료 할 말 없습니다 " INSTALLAX을"항상 처리됩니다. " INSTALLAX"는에 또한

당신이 CONCATENATE 연산자 "&"를 사용하지 않고 두 개의 명령을 사용하는 방법 ( blabla 에코 blabla >> 파일 고토) 여기

코드입니다 :

@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