这个问题与Halt batch file until service stop is complete?非常相似,但我想停止一个网站。目前脚本中有appcmd stop sites "siteName",但批处理文件只发出stop命令并继续。我希望批处理文件等到站点停止后再继续。我正在运行Windows Server 2008。

最佳答案

我无法用批处理文件来解决这个问题。类似的事情可能会奏效:

:LoopWhileNotStopped

for /f "delims=" %x in ('appcmd list site "siteName"') do set siteInfo="%x"

IF NOT %siteInfo:~-16% == "state:Stopped)"
    GOTO :LoopWhileNotStopped

但我不知道如何修改set siteInfo="%x"命令,以便它可以用于appcmd命令的输出。问题似乎是appcmd输出包含双引号,并且在执行变量扩展时干扰了命令解释。
下面是一个powershell脚本,它应该可以工作:
C:\Windows\System32\inetsrv\appcmd.exe stop site "siteName"

do { Start-Sleep -s 1; $siteInfo = C:\Windows\System32\inetsrv\appcmd.exe list site "siteName" } until ($siteInfo -match "state:Stopped")

10-08 04:58