AppCmd, aby utworzyć katalog wirtualny w domyślnej witrynie sieci Web w IIS7

11

Próbuję utworzyć katalog wirtualny w „Domyślnej witrynie sieci Web” w IIS 7 przy użyciu AppCmd.

Ale najpierw chciałbym sprawdzić, czy już istnieje. Jak mogę AppCmdutworzyć katalog wirtualny w „Domyślnej witrynie sieci Web” i jak mogę wykonać instrukcję if?

Riri
źródło

Odpowiedzi:

11

Spróbuj tego:

@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
Christopher_G_Lewis
źródło
Fajne! Właśnie tego potrzebuję! Dzięki! Wygląda na to, że ServerFault może być tak samo dobry jak SO!
Riri
2
Wydaje mi się, że nie wyzwala to kodu wyjścia 1 dla nieistniejącego katalogu wirtualnego. Korzystanie z IIS 7.5.
jpmc26,
1

Spróbuj tego. Przeważnie taki sam jak odpowiedź udzielona przez Christophera_G_Lewisa, ale opiera się na analizie wyniku listy zamiast kodu błędu, którego nie otrzymuję.

Korzysta również z konstruktora powłoki cmd.exe A || B (jeśli A zawiedzie, wykonaj 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
James Hebben
źródło