13

I try to create a virtual directory under the "Default Web Site" in IIS 7 using AppCmd.

But first I'd like to see if one already exists. How can I use AppCmd to create a virtual directory under the "Default Web Site" and how can I do an if-statement?

0

2 Answers 2

14

Try this:

@ECHO OFF
REM --------------------------------------------------------------------------------
REM Check for and create VDir under Default Web Site
REM
REM %1 is the VDIR to create
REM %2 is the Physical path to the VDIR 
REM --------------------------------------------------------------------------------

IF "%1"=="" GOTO Syntax
IF "%2"=="" GOTO Syntax

ECHO Running...
ECHO   AppCmd.exe list vdir "Default Web Site/%1/"
ECHO.
AppCmd.exe list vdir "Default Web Site/%1/"
IF %errorlevel%==1 GOTO Exists

ECHO.
ECHO Running...
ECHO   AppCmd.exe ADD vdir /app.name:"Default Web Site/" /path:/%1 /physicalPath:%2
ECHO.
AppCmd.exe ADD vdir /app.name:"Default Web Site/" /path:/%1 /physicalPath:%2

GOTO End

:Exists
ECHO.
ECHO VDir already exists
ECHO.
GOTO End

:SYNTAX
ECHO.
ECHO VDir Name and Physical Path Required
ECHO.
ECHO CreateVDir.CMD ^<VDirName^> C:\PhysPath
ECHO.

:END
2
  • Cool! This is just what I need to get going! Thanks! Looks like ServerFault might be just as good as SO!
    – Riri
    Jul 29, 2009 at 7:00
  • 2
    This does not seem to trigger an exit code of 1 for a nonexistent virtual directory for me. Using IIS 7.5.
    – jpmc26
    Jul 23, 2014 at 22:28
1

Try this. Mostly the same as the answer given by Christopher_G_Lewis, but relies on a parse of the list output instead of errorcode, which I don't get either.

Also makes use of the cmd.exe shell construct A || B (if A fails then do B)

@ECHO OFF
REM --------------------------------------------------------------------------------
REM Check for and create VDir under Default Web Site
REM
REM %1 is the VDIR to create
REM %2 is the Physical path to the VDIR 
REM --------------------------------------------------------------------------------

IF "%1"=="" GOTO Syntax
IF "%2"=="" GOTO Syntax

AppCmd.exe list vdir "Default Web Site/%1/" | findstr /I "Default Web Site/%1/" || AppCmd.exe add vdir /app.name:"Default Web Site/" /path:/%1 /physicalPath:%2

goto :eof

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .