0

I am having problems with my nested if syntax, i keep getting the error:

'ELSE' is not recognized as an internal or external command, operable program or batch file

here is the function:

:makejunction
set LOCALFOLDER=%~1
set QIFOLDER=%~2
pushd %LOCALFOLDER% 2>nul
IF errorlevel 1 (
    IF EXIST %LOCALFOLDER% ( 
        del "%LOCALFOLDER%" 
    )
)
ELSE  
(
    rmdir /S /Q "%LOCALFOLDER%"
)
mklink /J "%LOCALFOLDER%" "%QIFOLDER%" 

Thank you!!

fedorqui
  • 275,237
  • 103
  • 548
  • 598
user240880
  • 13
  • 2

2 Answers2

1

else and the parentheses must be on the same line:

:makejunction
set "LOCALFOLDER=%~1"
set "QIFOLDER=%~2"
pushd "%LOCALFOLDER%" 2>nul
IF errorlevel 1 (
    IF EXIST "%LOCALFOLDER%" del "%LOCALFOLDER%" 
) ELSE (
    rmdir /S /Q "%LOCALFOLDER%"
)
mklink /J "%LOCALFOLDER%" "%QIFOLDER%" 
Endoro
  • 37,015
  • 8
  • 50
  • 63
0

I think you need the else to be directly after the if, hence the (:

:makejunction
set LOCALFOLDER=%~1
set QIFOLDER=%~2
pushd %LOCALFOLDER% 2>nul
IF errorlevel 1 (
    IF EXIST %LOCALFOLDER% ( 
        del "%LOCALFOLDER%" 
    )
) ELSE (
    rmdir /S /Q "%LOCALFOLDER%"
)
mklink /J "%LOCALFOLDER%" "%QIFOLDER%" 

And that should work fine

Mona

Monacraft
  • 6,510
  • 2
  • 17
  • 29