开发者社区 问答 正文

重启IIS7应用程序池的批处理

批处理很简单: c:\windows\system32\inetsrv\AppCmd.exe stop apppool /apppool.name:"ASP.NET v4.0" c:\windows\system32\inetsrv\AppCmd.exe start apppool /apppool.name:"ASP.NET v4.0" 先Stop再Start就行。   但是以前有过在IIS管理器里面停止应用程序池,然后马上启动,这时可能因为应用程序池还有些操作没完全完成而报错。所以我很害怕批处理里第二个启动应用程序池的命令也会有报错的可能性。所以为了安全起见我希望能先Sleep 1分钟再Start一下。但是批处理里没有Sleep命令,所以就用下面的方法模拟了一下。 c:\windows\system32\inetsrv\AppCmd.exe stop apppool /apppool.name:"ASP.NET v4.0" c:\windows\system32\inetsrv\AppCmd.exe start apppool /apppool.name:"ASP.NET v4.0" ping -n 60 -w 1000 192.168.255.255 c:\windows\system32\inetsrv\AppCmd.exe start apppool /apppool.name:"ASP.NET v4.0"

展开
收起
拍聚宝 2015-01-27 21:52:58 6311 分享 版权
阿里云 AI 助理回答

在您的批处理脚本中,您希望通过添加延时来确保在停止应用程序池之后,再启动之前有一段等待时间,以避免因系统仍在处理前一个操作而可能引发的错误。您使用了ping命令作为实现延迟的方法,这是一个常见的技巧。

不过,我想提醒您的是,实际上在Windows批处理脚本中,可以更直接地使用timeout命令来实现暂停或“sleep”功能,这比使用ping命令更加直观和易于理解。下面是修改后的示例:

c:\windows\system32\inetsrv\AppCmd.exe stop apppool /apppool.name:"ASP.NET v4.0"
timeout /t 60 /nobreak > nul
c:\windows\system32\inetsrv\AppCmd.exe start apppool /apppool.name:"ASP.NET v4.0"

在这个例子中,timeout /t 60 /nobreak > nul命令会让脚本暂停60秒。/t 60指定了等待的时间(以秒为单位),/nobreak表示不接受用户按键中断这个等待过程,而> nul是将命令的输出重定向到空设备,这样就不会在控制台上显示倒计时信息。

这样的修改使得脚本更加简洁且目的明确,同时也避免了滥用网络命令来达到非预期的功能。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答