此问题与Halt batch file until service stop is complete?非常相似,但我想停止使用网站。我目前在脚本中有appcmd stop sites "siteName"
,但批处理文件只发出stop命令并继续。我想让批处理文件等到站点停止后再继续。我正在运行Windows Server 2008。
答案 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或更新版本。
尝试此操作以确保您正在执行所需的APPCMD:
“%windir%\ system32 \ inetsrv \ appcmd.exe”停止网站“siteName”