停止批处理文件,直到网站停止完成?

时间:2013-07-18 21:13:32

标签: windows batch-file web

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

3 个答案:

答案 0 :(得分:0)

我无法弄清楚如何使用批处理文件使其工作。像这样的可能会工作:

: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")

答案 1 :(得分:-1)

appcmd无论什么时候立即返回? 这可能有效,具体取决于appcmd的行为方式。

start /wait "site stop" appcmd stop sites "siteName"

如果appcmd是一个脚本,您可以修复它,以便它不会立即返回。

您使用的是哪种网络服务器?

答案 2 :(得分:-1)

如果您使用的是APPCMD,显然您使用的是IIS 7或更新版本。

  1. 我认为你的意思是SITE,而不是SITES。
  2. 您的路径中可能有另一个文件名APPCMD。输入APPCMD /?看你是不是 执行你的想法。
  3. 尝试此操作以确保您正在执行所需的APPCMD:

    “%windir%\ system32 \ inetsrv \ appcmd.exe”停止网站“siteName”