@echo off
#设置延时变量 bat中 在for循环中 除了%%i变量 会随着循环变化而变化 其他变量不会随着循环变化而变化,调用延时变量的时候需要用 "!变量名!"来调用
setlocal enabledelayedexpansion
pause
pause
:: 1 Stop all IIS
echo **************************start stop IIS***********************
iisreset /stop
iisreset /stop
iisreset /status
:: 2 stop all services
echo ************************start stop services*********************
#这里的^ 是对| 的转义。括号中的双引号是因为 参数中all的前边有空格
for /F "delims=: tokens=2" %%i in ('"sc query state= all" ^|findstr /i service_name ^| findstr /i ares')do (
set service_name=%%i
net stop "!service_name:~1!"
)
:: 3 start backup IIS
echo ************************start backup IIS*********************
set rootdir=D:\wwwroot
set destdir=D:\backup
set sj=%date%
if exist %destdir%\wwwroot%sj% ( ^
xcopy /s /e /y %rootdir% %destdir%\wwwroot%sj%
) ^
else ( ^
mkdir %destdir%\wwwroot%sj%
xcopy /s /e /y %rootdir% %destdir%\wwwroot%sj%
)
::4 start Unzip the update package
echo ************************unzip package*********************
for /F %%i in ('dir /b %~dp0 ^|findstr /i ares')do (
set pack_name=%%i
)
#因为window切换路径 会切换失败 /d 是强制切换
cd /d %~dp0
WinRAR.exe x %pack_name% -o+ -w %rootdir%
04-16