这个问题非常类似于Halt batch file until service stop is complete? 但我想停止一个网站。我目前appcmd stop sites "siteName"
在脚本中,但批处理文件只是发出停止命令并继续。我希望批处理文件等到站点停止后再继续。我正在运行 Windows Server 2008。
问问题
581 次
3 回答
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")
于 2015-03-13T14:06:36.360 回答
-1
appcmd
无论如何都会立即返回?这可能会起作用,具体取决于 appcmd 的行为方式。
start /wait "site stop" appcmd stop sites "siteName"
如果appcmd
是一个脚本,您可能可以修复它,使其不会立即返回。
您使用的是什么网络服务器?
于 2013-07-18T22:33:16.577 回答
-1
如果您使用的是 APPCMD,显然您使用的是 IIS 7 或更新版本。
- 我认为您的意思是站点而不是站点。
- 您的路径中可能有另一个文件名 APPCMD。输入 APPCMD /? 看看你是否正在执行你的想法。
试试这个以确保您正在执行所需的 APPCMD:
"%windir%\system32\inetsrv\appcmd.exe" 停止站点 "siteName"
于 2013-07-18T22:41:00.540 回答