NET5 站点发布脚本

@echo off
setlocal enabledelayedexpansion

REM 源目录, 要发布的 DLL 放到这个目录下面
set source="C:\Users\xxx\Desktop\N5 Deploy\source"
REM 目标目录前缀,目标目录命名如:API_N5_1,API_N5_2, API_N5_3 这样, 在同一个父文件夹下
set p=D:\Web\SUP_API重构\API_N5_
REM IIS站点名称前缀,及应用程序池命名前缀, 规则同上
SET sp=API_N5_

REM 从1开始,步长1, 5结束(API_N5_1 到 API_N5_5, 5个站点)
for /l %%N in (1,1,5) do (
    
    REM 拼接目标目录
    set t=%p%%%N
    
    REM 拼接目标站点、应用程序池名称
    set st=%sp%%%N
    
    REM 存在 app_offline.htm 文件时, NET5 站点自动下线,请求会返回 503
    set f=!t!\\app_offline.htm
    
    REM 如果目的目录不存在, 自动创建
    IF NOT EXIST !t! MD !t!
    
    REM echo !t!    
    REM echo !f!
    
    REM CD 不起作用
    REM CD /d !t!
    REM echo %CD%
    
    REM 创建 app_offline.htm 文件
    echo aa>!f!
    
    REM 暂停10秒, 等待站点停止
    REM ping 127.0.0.1 -n 10 >null
    
    REM 关闭站点,应用程序池
    REM app_offline.htm 对请求量大的站点,短时间内不会关闭应用程序池
    REM 如果不关闭站点、应用程序池, 还是会复制文件失败
    C:\Windows\System32\inetsrv\appcmd.exe stop site "!st!"
    C:\Windows\System32\inetsrv\appcmd.exe stop apppool /apppool.name:!st!
    
    REM 复制文件
    xcopy %source% !t! /Y /R /I /s /F
    
    
    REM 删除 app_offline.htm, 无 app_offline.htm 站点是可使用状态
    del /f /q !f!
    
    REM 打开站点,应用程序池
    C:\Windows\System32\inetsrv\appcmd.exe start apppool /apppool.name:!st!
    C:\Windows\System32\inetsrv\appcmd.exe start site "!st!"
    
    echo ---------------------------------------------
)

echo 完成, 10秒后自动关闭
ping 127.0.0.1 -n 10 >null

你可能感兴趣的:(NET5 站点发布脚本)